In [89]:
import geopandas as gpd
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

pd.set_option('display.max_columns', 500)

Lab 4: Fire Service Coverage Analysis - Maximal Covering Location Problem¶

For this lab we return to Fire Service Coverage seeking to assess tradeoffs in service against costs of maintaining different levels of stations.
Instead of covering all demand, the modeling approach tries to maximize the demand covered.
Specifically, we will employ the maximal covering location problem.
Instead of minimizing the number of facilities needed in a previous lab, we now introduce a parameter, $p$, representing a fixed number of facilities to keep in the system.

In Lab 4, there are three research questions we want to look into.

  1. Does a change in demand representation impact the optimization results?
  2. How can a service system be evaluated to prioritize demand maximization?
  3. Can the analysis process be generalized in order to replicate the approach using different demand representations?

The coverage standard for this lab will be fixed at 8000m.

In [90]:
S = 8000

Step 1. Prepare your dataset¶

Task: Load the three datasets and convert blocks and stations crs into the same one as FDs.crs.¶

  • It is because FDs is in a crs using meter as linear unit.
In [91]:
# Note: it might take time, as FD is a huge file.

FDs = gpd.read_file("Data/California_Fire_Districts.shp") # load a shapefile containing California Fire District here
blocks = gpd.read_file("Data/sbBlocks_pop.shp") # Load a shapefile containing Santa Barbara County blocks here
stations = gpd.read_file("Data/Fire_Stations_SBC.shp") # Load a shapefile containing Fire Stations in Santa Barbara County here

Task: Look into the following Fire District maps.¶

There are many Fire Districts in California.
We are only going to focus in the "Santa Barbara County Fire District".
In the second map, note that there are many other Fire Districts in Santa Barbara County.
Though it's not shown on the map, they have some overlapping area, which means the area is co-operated by multiple Fire Districts.

In [92]:
FDs.plot("Name")
Out[92]:
<Axes: >
In [93]:
FDs_blocks = FDs.loc[FDs.intersects(blocks.unary_union)].reset_index(drop=True)
FDs_blocks.plot("Name", legend=True, figsize=(10,10))
Out[93]:
<Axes: >

Question 1: Sort out a Fire District out of FDs GeoDataFrame. The district must have its 'Name" column value, "SANTA BARBARA CFD". ( 1 pt )¶

In [94]:
FDs
Out[94]:
OBJECTID County FDID MACSID Name Address City Zip FireChief Phone Notes LastUpdate Website CALFIREUni SHAPE_Leng SHAPE_Area geometry
0 1 ALAMEDA 01005 ALA ALAMEDA FD 1300 PARK ST ALAMEDA 94501 NICHOLAS LUBY (510) 337‐2100 None 2018-06-21 https://www.alamedaca.gov/Departments/Fire-Dep... SCU 53100.838603 6.064225e+07 POLYGON ((-201596.954 -22267.837, -201603.038 ...
1 2 ALAMEDA 01008 ACF ALAMEDA COUNTY FD 6363 CLARK AVE DUBLIN 94568 WILLIAM L. MCDONALD (925) 833‐3473 None 2018-06-21 https://fire.acgov.org/index.page SCU 530457.107901 1.323031e+09 MULTIPOLYGON (((-175442.453 -53077.073, -17553...
2 3 ALAMEDA 01010 ALB CITY OF ALBANY FD 1000 SAN PABLO AVE ALBANY 94706 JAMES BOITO (510) 528‐5770 None 2018-06-21 https://www.albanyca.org/departments/fire-depa... SCU 20088.685628 1.370118e+07 POLYGON ((-201563.420 -10606.685, -201501.465 ...
3 4 ALAMEDA 01015 BER BERKELEY FD 2100 MLK JR WAY, 2ND FLOOR BERKELEY 94704 DAVID SPRAGUE (510) 981‐3473 None 2018-06-21 https://www.cityofberkeley.info/fire/ SCU 40101.143624 4.576781e+07 POLYGON ((-199372.313 -10022.195, -199339.870 ...
4 5 ALAMEDA 01040 FRE FREMONT FD 3300 CAPITOL AVE FREMONT 94538 CURTIS JACOBSON (510) 494‐4200 None 2018-06-21 https://www.fremont.gov/FireDepartment SCU 112154.310535 2.371594e+08 POLYGON ((-174294.970 -43700.784, -171936.393 ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
740 1051 SAN DIEGO 37224 SYC SYCUAN FD 5449 SYCUAN RD EL CAJON 92019 ZACHARY CARILLO (619) 445‐2893 None 2023-03-09 http://www.sycuanfire.com/ SDU 37785.328123 8.982372e+06 MULTIPOLYGON (((297409.208 -575061.437, 297410...
741 1052 SAN DIEGO None  UNSERVED None None None None None None 2023-03-09 None SDU 45330.418511 7.563897e+06 MULTIPOLYGON (((282015.611 -595689.809, 282087...
742 1053 SAN DIEGO 37175 VCF VALLEY CENTER FPD 28234 LILAC ROAD VALLEY CENTER 92082 JOSEF NAPIER (760) 751‐7600 None 2023-03-09 https://www.valleycenterfire.com/ SDU 143517.569373 2.105188e+08 MULTIPOLYGON (((276424.489 -517951.013, 276425...
743 1054 SAN DIEGO 37235 VJS VIEJAS FD 19854 VIEJAS GRADE ROAD ALPINE 91901 BOB PFOHL (619) 445‐7772 None 2023-03-09 https://viejasbandofkumeyaay.org/modern-govern... SDU 15883.245366 6.842021e+06 POLYGON ((309343.124 -566700.191, 309344.725 -...
744 1055 SAN DIEGO 37170 VTA VISTA FD AND FPD 200 CIVIC CENTER DR VISTA 92084 NED VANDER POL (760) 726‐1340 None 2023-03-09 https://www.cityofvista.com/departments/fire-d... SDU 72732.586859 9.194203e+07 POLYGON ((262798.704 -523482.702, 262810.008 -...

745 rows × 17 columns

In [95]:
SBC_FD = FDs[FDs["Name"] == "SANTA BARBARA CFD"] ##PUT YOUR ANSWER HERE##
In [96]:
SBC_FD
Out[96]:
OBJECTID County FDID MACSID Name Address City Zip FireChief Phone Notes LastUpdate Website CALFIREUni SHAPE_Leng SHAPE_Area geometry
223 318 SANTA BARBARA 42035 SBC SANTA BARBARA CFD 4410 CATHEDRAL OAKS RD SANTA BARBARA 93110 MARK A. HARTWIG (805) 681‐5500 None 2018-06-21 https://www.sbcfire.com/ SBC 778360.396807 3.666998e+09 MULTIPOLYGON (((23728.804 -401033.857, 23715.3...

Task: Run following cell, "del FDs". Note: It will delete FDs variable.¶

We do this because FDs contains a large shapefile, which might burden your RAM.

In [97]:
del FDs

Task: take a subset of stations, within SBC_FD.¶

NOTE: don't forget to RESET_INDEX() whenever you take a subset!

In [98]:
stations = stations.to_crs("epsg:3310")
stations = stations.reset_index()

SBC_FD = SBC_FD.reset_index()
SBC_FD_boundary = SBC_FD.unary_union
In [99]:
stations = stations[stations.geometry.within(SBC_FD_boundary)]
In [100]:
len(stations)
Out[100]:
28

Question 2: Plot the blocks GeoDataFrame. ( 2 pts )¶

  • Firstly, update the blocks GeoDataFrame's geometry column to have block centroids, not block polygons ( 0.5 pt )
  • Secondly, take a subset of blocks which is within the SBC_FD area ( 0.5 pt )
  • Thirdly, plot blocks GeoDataFrame with "Population" column. ( 1 pt )
    • figsize=(10,10)
    • opacity must be 0.4
    • take a cmap (colormap) that you like from this webpage (https://matplotlib.org/stable/users/explain/colors/colormaps.html).
    • markersize must be proportional to the column, "Population"
    • ensure you have legend
    • Plot with stations GeoDataFrame

Hint: when there's something you don't know about plot function, refer to this document page (https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.plot.html)! Also, you can Google or ask chatGPT :)

In [101]:
blocks_poly = blocks.to_crs("epsg:3310")
In [102]:
blocks['geometry'] = blocks_poly.geometry.centroid
In [103]:
blocks = blocks[blocks.geometry.within(SBC_FD_boundary)]
In [104]:
FIGSIZE = (10, 10)

ax = blocks.plot(column='Population', 
            cmap='viridis', 
            legend=True, 
            markersize=blocks['Population']*0.1, 
            alpha=0.4,
            figsize = FIGSIZE)
stations.plot(ax=ax, color='red', marker='o', markersize=8)

plt.title("Blocks Population with Fire Stations")
Out[104]:
Text(0.5, 1.0, 'Blocks Population with Fire Stations')
In [105]:
len(blocks)
Out[105]:
3224

Step 2. Conduct MCLP¶

Decision Variables: \begin{align*} & x_j = \begin{cases} 1, & \text{if facility $j$ is open}, \\ 0, & \text{otherwise}. \end{cases} \\ & y_i = \begin{cases} 1, & \text{if demand $i$ is covered}, \\ 0, & \text{otherwise}. \end{cases} \end{align*}

Parameters: \begin{align*} & I = \text{number of demands}, \\ & J = \text{number of facilities}, \\ & S = \text{Coverage Distance Standard}, \\ & a_i = \text{Weight assigned to demand $i$}, \\ & D_{ij} = \text{Distance between demand $i$ and facility $j$}, \\ & N_i = \{ j \in J \, | \, D_{ij} \leq S \}, \\ & P = \text{the number of facilities to be opened}. \end{align*}

Objective Function: \begin{align*} \text{Maximize:} \quad & \sum_{i=1}^{I} a_i y_i \end{align*}

Constraints: \begin{align*} \text{Subject to:} \quad & \sum_{j \in N_i} x_j \geq y_i, \quad \forall i \in I \\ & \sum_{j=1}^{J} x_j \leq P, \\ & x_j, y_i \in \{0, 1\}, \quad \forall i, j. \end{align*}

Task: Based on the mathematical Model, set the I and J values correctly.¶

  • In this section, we will consider each block as demand $i$
  • we will consider each existing fire station as facility $j$
  • In the beginning of this lab, we defined our S value to be 8000 meter, 8 km.
  • Pick any P that is less than current number of stations :)
In [106]:
I = len(blocks)
J = len(stations)
P = 10

Task: We are going to have block's population as weight assigned to demand. Define $a_i$.¶

In [107]:
a_i = blocks.Population.reset_index(drop=True)

Task: Create $D_{ij}$ variable using Euclidean Distance between demand $i$ and facility $j$.¶

In [108]:
D_ij = np.array([[np.sqrt((blocks.centroid.iloc[i].x - stations.geometry.iloc[j].x)**2 + 
                 (blocks.centroid.iloc[i].y - stations.geometry.iloc[j].y)**2) 
         for j in range(J)] for i in range(I)])
In [109]:
np.array(D_ij).shape
Out[109]:
(3224, 28)
In [110]:
D_ij[0]
Out[110]:
array([10488.6795986 , 11964.87591378, 23611.82413809, 19220.52609931,
       44325.43354172, 49792.44459631, 54875.44421776, 54920.21451714,
       87307.12081531, 87147.7142053 , 92344.43775089, 85774.51894987,
       44292.79332137, 29166.453604  , 31325.2053394 , 19522.20564019,
       15804.27455278, 20810.44546551,  5581.76325035, 84322.1849891 ,
       82324.7646336 , 81074.31668414, 80793.08255445, 52749.13722297,
       82769.12045686, 66741.68258625, 53218.36841912, 20151.87176686])

Question 3: Create $N_i$ variable in list format. ( 1 pt )¶

  • Previously, $N_i$ in dictionary is introduced.
  • With your understanding so far, list format of $N_i$ can also be created.
  • You can use double for-loops, or list comprehension.
In [111]:
# This is a hint for students who want to do it with list comprehension


# Creating a two-dimensional list
matrix = [[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9],
          [10, 11, 12]]

# Using list comprehension to filter even numbers from the matrix
# The '%' symbol in Python is called the modulo operator. 
    #It returns the remainder of the division of the left operand by the right operand.
even_numbers = [[matrix[r][c] for c in range(len(matrix[0])) if matrix[r][c]%2 == 0]
                for r in range(len(matrix))]

print(even_numbers)
[[2], [4, 6], [8], [10, 12]]
In [112]:
# previous attempt
N_i = [[D_ij[i][j] for j in range(len(D_ij[0])) if D_ij[i][j] <= S]
       for i in range(len(D_ij))]
In [113]:
N_i
Out[113]:
[[5581.763250349166],
 [],
 [],
 [5158.5884900619085, 4298.327358936653],
 [],
 [],
 [3506.483303455249, 6696.5643326440295, 7620.706299743534],
 [],
 [6263.353521339313, 561.6180475865283, 620.248855619025, 1221.0448195691056],
 [1330.5926469199542, 2195.329294855399, 5334.049946779208],
 [5438.298238151872, 2529.7060589639036, 6512.6462098294405],
 [4230.927836890837, 806.264320664316],
 [5496.437539107421, 2454.7676347386373, 6889.590369152956, 7680.789093590131],
 [5409.555935894401, 2355.5314780060776, 6889.925162057932, 7681.816643047938],
 [3189.0086005903718, 1116.9222581175966, 5514.63135381434],
 [2985.2274165681188, 1059.8960157595113, 5536.160954114766],
 [5679.679815281578, 2568.3039042529235, 7213.71537376126, 7356.6630469326265],
 [3863.123050827854, 6875.26513359771, 5746.589702046077],
 [1345.6491280040175, 3845.8826818069406, 4796.5726537283435],
 [6008.648478598683,
  2882.519002135144,
  7801.240874641344,
  7449.372946379322,
  7129.009378908147],
 [2780.9244867241114, 1044.0804148090488, 5563.8239152318465],
 [3231.7373582565706, 947.6541577701909, 5697.61280721318],
 [3480.7303082917424, 953.7458932376578, 5818.842686805495],
 [6009.021609551281,
  2868.437682796507,
  7728.367610331922,
  7517.4364705612,
  7057.891230686711],
 [3028.705763925851, 880.9802430023175, 5717.181371464587],
 [2806.1426167888667, 824.7019402681243, 7036.271228654789],
 [6102.332339878281,
  2955.5670756762697,
  7649.369030369969,
  7601.801712150687,
  6976.7572682087475],
 [5917.511457895793,
  2774.208963007676,
  7759.372384387843,
  7479.598137633759,
  7092.216179803893],
 [5545.50922646307, 2431.7846096185203, 7156.2239319927585, 7416.12942857438],
 [563.1455166933224, 3302.490836651475],
 [469.0935330138492, 3403.0547644610015],
 [261.33955198876487, 3561.2533603658367],
 [2394.3182377248577, 4738.027097192966],
 [411.4349163591948, 4151.543135078614],
 [4057.5959944158412, 246.9696929500373],
 [5613.8057586518735, 4496.570201228645],
 [6216.056985540807, 5599.38422430678],
 [4672.905104481381, 7442.3912830726895],
 [2639.426938514872],
 [4106.03818724344],
 [2984.9615759776902],
 [7493.515187300872, 5845.925913721905],
 [5597.011691635452],
 [5092.784253529144],
 [6410.064018213873],
 [],
 [],
 [],
 [],
 [],
 [],
 [2926.691082300026, 4335.882063282506, 7547.142032376211],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [4200.1802542875475],
 [4760.0608692321175],
 [2573.695408621553],
 [4541.881219092046],
 [4317.379671658464],
 [4756.452335553448],
 [],
 [7519.255063122392],
 [],
 [],
 [],
 [2900.07643412879],
 [],
 [],
 [],
 [],
 [],
 [2572.3251650056286,
  922.3137560813235,
  7251.103075099852,
  2456.527135334943,
  6151.048356831953,
  6098.187624365502,
  7613.014199269387,
  4744.1488345733715],
 [4162.773649415085,
  2602.2552096402255,
  1795.5929384502144,
  4492.398730195346,
  4752.17168298851,
  5999.767377851343,
  3216.7833367046055],
 [1151.780040010361,
  1196.647567829997,
  5232.836513643524,
  4158.581442364808,
  7929.422467520532,
  6723.99835390342],
 [536.3676024745733,
  1865.1136243354424,
  4931.348928055057,
  4485.123740737939,
  7179.3866390129615],
 [7792.548305516279, 1872.2376338262889, 1770.3550795144815],
 [7836.956607693777, 1594.1282552286577, 1378.1906209817962],
 [4867.220430644877,
  967.3954824347823,
  7020.409283112895,
  7082.448301960081,
  5274.39206132983],
 [6646.412418594942,
  1683.7319936713961,
  5213.411818274722,
  5276.0132726926095,
  3492.1182987817024],
 [6904.939114053158, 6731.907070470269, 5296.854624359271, 7982.41058799665],
 [5830.330441949872,
  1943.1867394716137,
  2466.2552331997094,
  370.5271202779939,
  3126.9931527419308],
 [2784.940549059189, 1036.599194436379],
 [2638.1212984906224,
  976.1661274664636,
  7270.222315957931,
  2490.8179713397417,
  6131.326893288146,
  6110.9576005710305,
  7601.381276448943,
  4740.1782009664275],
 [3833.155131074081,
  2197.9623220676353,
  2177.964484724164,
  5029.945916177273,
  5321.8383347036415,
  6554.493419476476,
  3789.457215821472],
 [3330.8115776792124,
  1697.9918131634415,
  7967.638859665483,
  2165.1312071427064,
  5442.737301993089,
  5572.560955705408,
  6938.81495569337,
  4116.689300781898],
 [1119.765759468517,
  718.488770270296,
  5746.00804805632,
  3634.814098732502,
  7713.817232910114,
  7406.385353703743,
  6216.148079573523],
 [1963.0284067206007,
  1033.5675153559823,
  5687.390969699826,
  3986.7289851169967,
  7726.963186645606,
  7694.135209060719,
  6353.340290203227],
 [480.79392557559305,
  1513.8344832832577,
  5198.062599453256,
  4182.029996858623,
  7940.397519012429,
  6857.9976056170835],
 [727.3390625613381,
  1986.3545477589626,
  4741.859701086704,
  4663.070902407602,
  7348.491999677099],
 [2491.418866572015,
  2453.01274165842,
  7915.882744918934,
  2118.967757438704,
  6514.793004994668,
  5483.934365437562,
  7628.091380903633,
  4806.138911004448],
 [765.1569905562352,
  1016.7270871538057,
  6051.645001469214,
  3336.3274086925803,
  7613.038958322688,
  7088.719694548444,
  6033.835793785964],
 [3107.7095174053106,
  1908.9055776857424,
  1127.611413496644,
  5255.515813794687,
  4867.199960386397,
  6600.491231601234,
  3684.8808178020777],
 [2038.402668425695,
  2112.3671474168477,
  7466.514805696201,
  2378.864995194764,
  6808.088792867844,
  5877.548568283215,
  7972.0803081622735,
  5116.648731428249],
 [3122.076986657644,
  2010.390134736013,
  1012.2632265199849,
  5247.214881392411,
  4777.238613088733,
  6563.921954355587,
  3647.987967854887],
 [3340.3299347451975,
  2022.812459412639,
  1145.0497082096015,
  5039.389162384379,
  4781.757030388334,
  6421.49070258796,
  3513.8416445223984],
 [],
 [],
 [4862.644653776673],
 [2059.7073314132513, 3579.47094346473],
 [2265.972786830017, 2504.8126839027314, 7814.420885513091],
 [3324.148103367091, 1946.5914668701216],
 [2368.4844688894545, 3471.036860203432],
 [2765.91670608498, 3546.030008901256],
 [2894.27349462941, 3978.697364142867, 7998.948189975859],
 [3410.4855671975615],
 [7856.231897681726],
 [572.9697501548883],
 [7175.308569516866, 3213.1055178759307, 6792.389040050301],
 [6893.73454011405, 7617.164978862553],
 [7914.086967693781],
 [7917.884044187884,
  4471.0966045564055,
  4167.8987436606185,
  2883.65331811986,
  5419.376915283535],
 [7375.576994514283,
  3697.5770659473565,
  3703.91014278929,
  2092.861631892037,
  4778.1184833251655],
 [352.0158853452278],
 [1317.153664525478, 6836.057211059475],
 [1204.2531877573986, 6723.355892844034],
 [1094.254246343461, 6605.435370429452],
 [5475.708022077347,
  1874.0249332791514,
  2020.6342792883313,
  625.1233494108001,
  2822.6087134807867],
 [1072.8254247980437,
  1416.9855256044145,
  5027.810805397539,
  4345.2411403635215,
  6934.000204175793],
 [6001.661250884301,
  5105.071262494021,
  2083.4112691642026,
  3232.8738245890904,
  1772.4302043489026,
  4010.532012324646,
  1627.3731553454465],
 [6432.897108087895,
  2468.717231902978,
  3006.8664575469343,
  864.8714608633165,
  3729.2109162327206],
 [4661.882444661565, 5763.463165193249, 874.4394407883311],
 [5273.509158470421, 6107.558217450078, 661.019784819717],
 [4413.124290228406, 5423.039008046223, 1027.048174056277],
 [4827.159513392273, 5912.147552376346, 707.7023674157773],
 [4511.490366756901, 5549.094109215101, 933.5865972301928],
 [4780.016475824554, 5785.716041900647, 659.7584790461269],
 [3828.875686440945, 2162.8973516874125, 4686.659590241689],
 [4266.53756590672, 1998.6387678351023, 5291.415737512978],
 [1615.5877837668568, 2297.351518092954],
 [6926.914323120592,
  4490.444629328995,
  456.2580587625645,
  2757.4942113616967,
  1946.173448579072,
  1899.504564117478],
 [7922.516913413046,
  5266.477318134211,
  939.6252595784285,
  2549.6442014199074,
  760.7077727584505,
  2510.9677311799874],
 [7892.266828630688,
  5221.415531759721,
  927.5268531387298,
  2474.5760334572997,
  729.5225784152736,
  2464.188830059896],
 [7942.043383953139,
  5272.2663444438085,
  972.6901495960574,
  2512.0272735307094,
  702.3996370924103,
  2515.013213306295],
 [7876.747041204804,
  5218.748545142327,
  898.0688615378319,
  2511.9910098620335,
  780.6328131270603,
  2463.149761499253],
 [6485.558458295699,
  5675.08881232809,
  2666.794778384183,
  3345.5092699474153,
  1446.7329278719562,
  3864.7199037943224,
  1942.7124770164412],
 [6380.838228045383,
  5431.274843163423,
  2412.4565725808416,
  2872.9353742793683,
  1380.9366847248584,
  3597.5261271589748,
  1358.7841152528858],
 [6310.88601825411,
  5399.349004624854,
  2376.817656274698,
  3037.52953537194,
  1463.279306112975,
  3734.9699861428335,
  1520.5650764094696],
 [6202.354630967372,
  5242.109015689261,
  2224.5042076761524,
  2927.2994185299453,
  1559.9526755378256,
  3724.24118284019,
  1340.8553397241717],
 [5973.05612752184,
  4900.014979236845,
  1934.9740282453802,
  2751.880827047788,
  1887.8398469435592,
  3769.9428414787512,
  1041.7216990479794],
 [6196.049635714492,
  5222.346646914668,
  2207.869042457421,
  2887.7523851675546,
  1569.503056770118,
  3705.250394101434,
  1289.8098718835124],
 [6185.223482795601,
  5186.24822744361,
  2179.8755513184474,
  2815.070213937133,
  1593.266233913349,
  3671.917900911379,
  1195.1980960338296],
 [5917.411210886374,
  4899.001539780987,
  1898.9957732291455,
  2930.2898944307885,
  1877.6717803044473,
  3883.2824986916353,
  1239.7972136772428],
 [6883.681859590044,
  5852.703426314603,
  2865.467505046398,
  2335.471875966258,
  933.2914267743049,
  3007.9350520516255,
  1041.2011673870938],
 [6702.627686596582,
  5626.331541745244,
  2667.092320215814,
  2254.6709457977418,
  1199.0737465806596,
  3086.7592566067347,
  790.4856509988381],
 [6652.4597678569435,
  5619.597317290065,
  2632.0494336430934,
  2439.768214238921,
  1162.1871830488813,
  3204.2683225139117,
  990.2174008382656],
 [4006.4021998015023, 4413.481835675171],
 [7226.325822956655,
  5982.882144418934,
  3216.648182268974,
  1317.260366311511,
  1563.337048631897,
  2457.481603718675,
  460.28566263992866],
 [7364.8622591267795,
  6118.487948609368,
  3354.9910937153413,
  1200.118111690304,
  1540.30525036549,
  2319.6694855895507,
  598.9052402226623],
 [],
 [489.31694400624224, 3538.8881477405407],
 [6784.843280252847, 2564.5391894982804, 1946.1579394284367],
 [5558.508289024959,
  1901.8233404650264,
  2112.776690120406,
  570.7773769057426,
  2896.4928570576576],
 [4878.175536043988, 3794.1700910848253],
 [5453.029453672035,
  1190.2402049130635,
  2572.0896663422977,
  512.6901263636531,
  2694.7613633811884],
 [7091.215693150542],
 [6712.202614939703],
 [7653.4851076647055, 6989.639806510383],
 [6240.3579821226185],
 [6564.746081512531],
 [6330.015609640463],
 [4965.617337040406],
 [6602.625293557918],
 [6223.647095263045],
 [5383.814559821798],
 [3759.3893818262845, 568.8193562386648],
 [2629.7714806647073],
 [1348.646895003496, 6287.858879936277],
 [6316.765457484954, 7178.866714190989, 741.5534541274532],
 [3818.8312234295995],
 [6965.47170037582, 3847.056174244907],
 [3842.082638641342],
 [7124.798429849759, 2339.2311549250426],
 [6086.358052980229, 6177.367318342846, 972.1071202646475],
 [2185.038293707857],
 [2886.685616476031],
 [1517.4722795677455, 7026.461782666069],
 [5110.25006069074, 7635.097982210378, 4445.066858777675],
 [6138.970326650907, 5577.548756497025, 2213.110600186385],
 [6794.208659452528,
  6030.098043197243,
  7514.86185433773,
  7550.821966014976,
  6070.231433940771],
 [6639.13203418451],
 [5894.502176491137, 5814.279078673375, 6655.660225406536],
 [3393.8493944177644, 6413.7967759229505],
 [6837.07077645981,
  5409.923031409114,
  6741.925746868862,
  6780.104817492206,
  5259.159496517168],
 [3839.7259409504472, 5832.154733401691],
 [4770.475473464692, 5669.488203258208, 7428.386200002547],
 [4149.305307001241],
 [3204.3524960720965, 7716.256832680089],
 [6093.216253192383,
  5470.461065793836,
  7625.374426089936,
  7666.153509215561,
  6078.039679592973],
 [4898.444248031066,
  3343.875841523796,
  7139.486384534023,
  7192.56654023616,
  5391.148582823624],
 [2435.797189296639, 6109.347377163045],
 [2476.8489494870437, 5325.095803219761],
 [6989.312644024433,
  4369.774913649969,
  5526.128890444505,
  5570.467809263123,
  3931.0928130089505],
 [1811.4050634728846, 2528.1972531165916],
 [749.0083871147494, 3083.049086188599],
 [5327.272082281373, 5300.745990727608, 3719.9958740275783, 6450.965212192113],
 [528.4978538341353],
 [2664.8643918322473],
 [2540.9984866805885],
 [1792.6517288577575],
 [1587.8580174542385],
 [],
 [3053.3869736871034, 796.8497906606816, 5802.892463637488],
 [2591.9522747431743, 1026.2609649572648, 5641.8359432781845],
 [],
 [2014.624855407874, 1262.2208290519097, 6497.184864094486],
 [2163.7026281662643, 5354.313451079793, 6192.864013519641],
 [6992.68759249118],
 [3440.351525190514, 494.47069618494294, 6278.20325414667],
 [3136.2839841241157, 639.716207103042, 5970.9522760916925],
 [1331.4267391082083, 4453.464238197174, 5686.7529427998425],
 [2352.90219207801, 5541.162881462298, 6987.669347818125],
 [7591.291914055027, 6807.916980705516, 6033.238226913035],
 [2986.209065152371, 837.3958593228093, 7187.060195923582],
 [6850.775662637941, 6647.490699574548, 5242.236946594419, 7911.156111221586],
 [3067.0021643925634, 235.07714595710314, 6701.808266412646],
 [3036.305759722869, 688.7763069506155, 7096.131639842714],
 [2622.4176710634247, 594.6612127056045, 6450.5152701074285],
 [6927.122486259339, 6698.723277500686, 5318.518345323624, 7975.031079076312],
 [2901.8020077076876, 569.0786184112561, 6881.830505082587],
 [1716.606866329424, 2405.274123702247, 7291.298330460225],
 [2730.7488365013587, 1078.2016349469734, 7194.172898756582],
 [3265.7342048233345, 511.81554755687915, 7068.760424509732],
 [1618.1305353894763, 4821.824328355982, 6505.3908225303785],
 [5844.576071816465, 2654.503070548204, 6910.863242799818, 6287.494509942849],
 [3292.9688477913187, 1541.917873465324, 7902.974855547384],
 [5783.665921873058, 2599.5119588551834, 6926.879117385811, 6308.128393437336],
 [5925.942634969848, 2745.836805025847, 6783.938684928179, 6162.931531780142],
 [6007.905809271319, 2823.616471716291, 6738.02216300647, 6112.689739590712],
 [3280.955773687172,
  2288.574416237364,
  768.2966003961704,
  5134.463127950604,
  4537.681319253549,
  6402.083154645375,
  3494.040775807518],
 [6164.3115617272815,
  4768.934631146646,
  2408.457967967534,
  2239.255677560945,
  2840.2489213561594,
  3730.579929283455,
  1118.4751720249863],
 [5998.034792349316, 2825.9615910803, 6682.187339659252, 6062.587500244768],
 [5891.578608925811, 2720.235642011132, 6771.121452089488, 6154.805067795573],
 [6089.41827025886, 2913.4397835193663, 6622.944407294211, 5999.043330914686],
 [3455.3227816810277, 851.8876139462126, 7420.406080166288],
 [6300.855767817229,
  4833.812617649075,
  2710.1601074902815,
  2262.610190798641,
  3202.742814150467,
  3828.7608576106436,
  1478.6129356739225],
 [6317.012841243222,
  4845.678422348155,
  2736.7698004151125,
  2261.7148130990245,
  3225.415417856104,
  3831.7566601288877,
  1502.3997226045985],
 [2860.1655620189363, 672.3622298107587, 6942.977233394998],
 [5932.2254702273385, 2765.823313878953, 6714.347674557047, 6098.880040180624],
 [5973.40074529599, 2812.1849610189806, 6657.107195623397, 6042.527354582351],
 [1284.58987446743, 4378.33108864646, 6803.833169106366],
 [6835.27779679233],
 [],
 [],
 [7903.526424912791],
 [],
 [],
 [],
 [2752.24984938011],
 [6711.247962121319],
 [5873.003966555368],
 [3601.0415503244258, 885.5934022016935],
 [3367.3529047855864, 715.8949761981305],
 [3851.435283357577, 150.47267004475165],
 [4082.64326050627, 397.78226935929655],
 [3717.415628903787, 259.8580709724852],
 [3222.663082067678, 685.0920702006786],
 [3964.5752672156177, 230.75296683547157],
 [3179.8667794492753, 640.916341668559],
 [3110.9278237784483, 711.7179809240166],
 [3671.9667530526312, 1010.0494663784114],
 [3580.926253843822, 2393.5826832778275],
 [3381.49062807959, 2704.717232917784],
 [3355.4961348986817, 2086.001751106091],
 [2590.42048447643, 2565.41389176758],
 [2795.967590434466, 2571.482205210337],
 [2718.9036511822724, 2718.350427253412],
 [3048.4230760627715, 2349.4958943609377],
 [3311.6998277904645, 3100.6346374499203],
 [3293.097203497797, 3525.8689527597785],
 [3254.8291258166823, 3316.8708409844885],
 [3118.4609191946515, 3091.808642435195],
 [3210.767972192538, 2996.1395802195775],
 [2542.753735113586, 2821.964078043156],
 [3193.0073237726697, 1420.5347164778864],
 [3050.2728227174425, 1179.5173287196242],
 [3006.7010104949163, 1466.6901077153066],
 [3096.865708347898, 983.5197030601964],
 [241.20138040160765, 3973.3242860081937],
 [1096.134117935565, 3760.9016550842243],
 [2973.9406794552283, 1121.7846068990964],
 [1647.9255975462136, 2172.870691170779],
 [2252.1040417044533, 1746.3182285726484],
 [3309.8349969680567, 148.59822805457048, 6736.857691854105],
 [3451.8567726145643, 429.1806489507681, 7020.910528187933],
 [3362.7572246324135, 401.8726133540226, 6994.50822358967],
 [3476.759862999818, 657.8712089073973, 7249.048477432886],
 [2264.7976671547135, 2163.528945649211, 7616.482641706103],
 [2412.8533472099307, 2203.606881717288, 7758.6942887256455],
 [1006.5132320935068, 1643.4481885088915],
 [1005.9964558946535, 1616.6764137527696],
 [850.3201042410411, 6229.003033486538],
 [919.5865624251528, 6311.418607316271],
 [3105.7436250615683, 2169.1597678062103, 4427.160667769529],
 [4494.237813786913, 2163.42750031804, 5346.992555997508],
 [5836.3670012477505,
  4760.211825759095,
  1797.0582541054198,
  2847.693021715009,
  2025.9994158010875,
  3896.6306204802418,
  1126.568773326159],
 [5331.054306053079,
  4259.56868976077,
  1290.2884267693837,
  3260.1752447314675,
  2518.0851900221323,
  4383.550829506043,
  1539.2003150878677],
 [5782.972906540563,
  4611.396056186773,
  1758.674626867205,
  2708.122875163928,
  2261.587048546501,
  3898.4220699189627,
  1002.5818674554249],
 [5235.360662862095,
  4104.435285560417,
  1203.91227125397,
  3253.2372812331164,
  2693.459242465775,
  4450.339570815795,
  1557.6076501548305],
 [5539.219324588976,
  4284.057644667623,
  1601.2052986585306,
  2843.8640203436357,
  2693.200688012366,
  4158.707875134876,
  1248.173309122766],
 [3350.0839797150607, 3633.4986273256645],
 [550.3543596645585],
 [4865.472342131662,
  711.7784953721606,
  7193.078833571633,
  7255.848088339275,
  5471.211472524993],
 [3527.8289322915034, 322.25955078761586],
 [6873.428224974472,
  4029.4997376486963,
  1145.2393713104966,
  1203.8504666042552,
  1637.9436482155932,
  1347.1816863831166],
 [4127.541060493101,
  2884.271657547484,
  625.6811778662048,
  4236.727163323916,
  3928.8378059536335,
  5578.170831088939,
  2664.033086928611],
 [3928.1599279219004, 3927.664621577071],
 [7485.554178195252, 6961.0314583927775, 7749.6340005225475],
 [4133.99751636179, 1570.6911106653804],
 [5781.749719479448, 5842.200614664822],
 [4515.5702002228045,
  3224.1954257712987,
  883.5850688558581,
  3847.591524901076,
  3662.407937926662,
  5213.288124941259,
  2307.763504317504],
 [1643.138944221839,
  193.84659990778925,
  6251.00963730601,
  3213.9372623452905,
  7168.339666276489,
  6963.927478059668,
  5707.388667660311],
 [3740.621636457819, 80.28189981214813],
 [7458.5611557070015, 4837.604556326171, 4710.040870505522, 4291.144489422016],
 [4082.266336681101, 289.80005714579136],
 [],
 [879.0498670592817,
  1569.9715237201824,
  4942.415269711513,
  4416.453383934352,
  7044.981779454915],
 [],
 [5765.7316293875865, 4861.220022344536, 2873.5813146547143],
 [1641.447579888585, 2816.6433642455277],
 [1353.333731518282, 3242.8306399082403],
 [3043.894748415631,
  3770.461694386934,
  3833.4100113095146,
  2083.8678115572716],
 [],
 [6204.75665496171,
  5167.8765971249395,
  2179.725786828068,
  2688.705949803029,
  1609.8003328596174,
  3597.6110017649034,
  1044.453083952503],
 [6199.325141836206,
  5143.580211969851,
  2167.149745847763,
  2637.464636790134,
  1640.6220678226846,
  3577.7074308587066,
  976.3746420065851],
 [5688.605261450901,
  4718.118945812176,
  1699.8449972209162,
  3206.486414538324,
  2079.5522072500435,
  4151.929055939097,
  1507.5638009367874],
 [6166.498810099242,
  5063.765692693918,
  2125.1031078066785,
  2533.4951150678444,
  1755.6085774529781,
  3558.429181333644,
  830.6289109308068],
 [6524.297901048602,
  5295.883486585066,
  2517.466178516116,
  1950.4465175618848,
  1852.1410331565744,
  3157.486796143362,
  241.9505927790688],
 [6509.116088103276,
  5295.209076478742,
  2493.5848037787923,
  1993.0197970778304,
  1803.9043771838537,
  3170.6479631463308,
  269.42502590361966],
 [6101.787316008785,
  4842.4794792258235,
  2134.4810533057616,
  2297.4404781853714,
  2268.6807784805096,
  3595.181084492146,
  691.9926467660645],
 [6228.851407903222,
  5006.4806815872735,
  2224.8626168386395,
  2226.8717475081417,
  2040.2326900067658,
  3452.657562374402,
  537.3356887338153],
 [7488.0986078590995,
  4777.661615536028,
  679.5178513598337,
  2071.5898490315467,
  974.4918863013694,
  2019.4961964563452],
 [6737.185928065523,
  5231.671318605322,
  3210.397782383539,
  2049.1378878061373,
  3374.9968678680434,
  3654.1271111864685,
  1706.3487421099073],
 [6531.49815374729,
  5139.232457508443,
  2734.8692243629484,
  1870.299347771779,
  2663.6515184820228,
  3377.55268545802,
  948.0664602627459],
 [7463.501805007762,
  5024.058615446789,
  707.3663409125792,
  3008.4791266214315,
  1671.1673199499032,
  2387.490142058002],
 [7288.156221083096,
  4848.642765308329,
  580.7757167723671,
  2914.9270955702186,
  1744.8121482580702,
  2223.713507026634],
 [7344.338430014378,
  4946.239593035621,
  735.9792729173898,
  3072.2414988942032,
  1836.9146331605318,
  2350.401090858531],
 [7657.068119045088,
  5233.972070058152,
  905.3710624321171,
  3171.1286341423765,
  1661.9544478822424,
  2598.0132266465334],
 [7541.570439359635,
  5158.6685681045265,
  914.5301766302264,
  3227.603654002494,
  1819.4888507437615,
  2560.28315572254],
 [7514.819014406167,
  5113.075912734314,
  844.7851268839567,
  3154.6086181031446,
  1768.5422867690481,
  2501.8353740020007],
 [7350.571304411816,
  4987.085619485957,
  839.6819921942683,
  3180.2844180787483,
  1933.8526788052898,
  2419.572258715346],
 [7765.386428359745,
  5415.625942568074,
  1172.5619986744014,
  3461.692791736896,
  1886.4241554456971,
  2827.789592291166],
 [7611.656849407429,
  5363.489743961704,
  1328.0439621962485,
  3665.3606283615904,
  2228.1358537033,
  2870.9445811694377],
 [6689.099459762931,
  5238.281232842716,
  3010.060117904478,
  1855.0735226309048,
  2984.9521648572218,
  3432.284951707153,
  1305.1651675408007],
 [6893.3870854601655,
  5363.793492478201,
  3430.819531180588,
  2078.924621205947,
  3557.010875678555,
  3687.172068958741,
  1916.877599229582],
 [1092.8635498743513,
  784.9366959068938,
  5676.8228533872925,
  3702.80778330945,
  7782.502372601953,
  7474.622002729049,
  6285.437339351955],
 [5816.913323736893,
  5110.873655081125,
  2175.3183639268873,
  3913.515654012372,
  2181.623175535952,
  4568.904902620207,
  2338.8111711504157],
 [5189.746238151979,
  4328.802004309273,
  1328.0604731433332,
  3787.917918570456,
  2580.409517490309,
  4734.913358503623,
  2075.2642430650703],
 [4048.187281849573,
  3313.3993054603843,
  724.1834433101156,
  4763.597049718218,
  3732.0513541545706,
  5837.009099631417,
  3041.660206437181],
 [5552.117874055666,
  4578.965454445485,
  1560.4079659831677,
  3291.861286553495,
  2218.195763253538,
  4269.961610952916,
  1579.6148427421672],
 [4636.413607742845,
  3749.6319010496604,
  764.1522322875787,
  4112.639733216943,
  3125.1542934694744,
  5181.186466125533,
  2388.274326014783],
 [4824.240885318918,
  4067.779394582152,
  1177.3046995970712,
  4236.962238485896,
  2984.927959086009,
  5182.973334969907,
  2519.467735225512],
 [3316.4361172750782, 3399.5039994269264],
 [5800.871390908424,
  900.6929127556883,
  7191.088135397615,
  7255.089476608768,
  5617.777300807799],
 [7454.937458898737,
  2579.088972675882,
  7105.602432095658,
  7167.5127041485775,
  5831.644005981719],
 [6361.156518268555,
  1954.2819926737434,
  7684.182407194591,
  7747.662796294221,
  6238.165244731991],
 [5698.700161016094,
  4229.781111098983,
  2215.823015605322,
  2830.069198207572,
  3458.2841947653783,
  4363.379839927661,
  1757.6845442492158],
 [5505.663305876026,
  1217.0846550912725,
  2641.9230200830348,
  541.6092827738867,
  2747.4058609681797],
 [5688.030187716425,
  1448.114347750352,
  2699.31159912417,
  375.040852726365,
  2931.149639778142],
 [3664.4768363128687, 758.1175093248484],
 [3381.309429052731, 904.0399938596745],
 [5606.106732206929, 2135.963630462084],
 [5634.691041529673,
  1563.8754060128194,
  2478.8872778360337,
  54.930894073121294,
  2893.539294561659],
 [3729.401911275608, 3150.84337485875],
 [5492.0621352920425,
  1724.063545519946,
  2139.602821787827,
  406.40051966664436,
  2800.188441016653],
 [3839.502653830261, 3577.1904945366086],
 [4005.3183004910948, 4212.458623821376],
 [3948.1480453860113, 6192.590734296479],
 [6387.675726359318,
  5225.083426019241,
  2352.0631885610906,
  2211.77175122897,
  1714.7959554025435,
  3302.465113747611,
  497.9054401600267],
 [6490.085429544688,
  5332.2903888434785,
  2452.600132601681,
  2143.0299405914807,
  1615.8604977715183,
  3204.281213181304,
  454.3667686690551],
 [2778.067684069455,
  2432.6840173825512,
  4639.77254461441,
  5388.679441365695,
  7668.0920757246795],
 [4289.132360322727,
  3567.725824560136,
  864.5342147944848,
  4627.868543814805,
  3508.1406101419866,
  5654.7309904266585,
  2902.186345245281],
 [776.9433918361832,
  2090.9527456463584,
  5973.100431890949,
  3821.8744520896744,
  7425.369198536143,
  6580.043847680198],
 [1126.038240825863,
  2524.394638328121,
  5996.162575968073,
  4082.0293529039077,
  7600.037282131871,
  6835.748939457281],
 [5696.153500972248, 7036.204737939786, 1851.6443248170283],
 [6824.633107056937,
  3692.0344600260983,
  3058.431089560013,
  2234.1460419343243,
  4410.861602963576],
 [6610.940737559673,
  3491.659949122344,
  2847.8980253999684,
  2063.0424889910623,
  4191.391401019594],
 [1278.5002884350565],
 [6474.42912370881],
 [713.618025538117],
 [7283.580162246406],
 [5137.630640681413],
 [3692.5457312198787],
 [7416.405996412499],
 [6691.2456474795745, 7918.833468102415],
 [6296.422638694012],
 [7640.9074854844175, 7011.001880334528],
 [4246.031953358611],
 [4058.9406895684283],
 [4098.726237081995],
 [4185.193251636835],
 [4777.34231346955],
 [7747.636478608843,
  2227.9289211054056,
  5167.975990908147,
  5231.316775911223,
  3790.83490980815],
 [2828.9415966843726, 4607.303264525567],
 [],
 [5114.573633880423, 5978.872531588743, 623.630208961958],
 [],
 [],
 [],
 [4978.441935100086, 5891.318838791735, 579.4205297870733],
 [],
 [6169.792559913564,
  1890.2408973246895,
  3113.692056319557,
  651.2752812966175,
  3412.6645555676323],
 [664.5048787124185, 1361.1538786449464],
 [],
 [4205.4542505668705, 396.3352952005774],
 [5581.639191479753,
  1263.2158906350555,
  2738.6612330819676,
  589.6724493851384,
  2823.9611894644313],
 [4363.109730117705, 3708.599709776458],
 [4060.93560041833, 3812.404845082223],
 [4127.174892841013, 3762.127582185691],
 [5307.727845053489, 1563.5651860977134],
 [5331.016671295582, 2418.629028873692, 6485.404806018683],
 [2988.628907776118, 850.7694532330348],
 [5521.572646639607, 2584.656311778376, 6612.240558068356, 7963.966536963763],
 [5701.987534680866, 2758.786685092324, 6698.3935266107865, 7890.655124382216],
 [5499.901577102051, 2529.7420334914705, 6689.788308425155, 7883.069338603865],
 [2881.433232868829, 1476.6306768798393, 5118.4620641628435],
 [5724.448005827687, 2713.2734643950625, 6897.641913960132, 7682.990247563582],
 [2680.801176289814, 1637.3352608038435, 4982.91254615387],
 [3264.0014674489407, 671.1930802812019, 7203.914261909008],
 [2577.8842492157873, 1685.7576771695617, 4960.234214207241],
 [3103.0137317329695,
  3427.0089360800453,
  3292.604507056171,
  6449.568126650616],
 [5815.433250894893, 2746.3320467250405, 7125.243026912018, 7452.612734267627],
 [5396.765476088475, 2389.6423363004724, 6748.93779388508, 7821.5172040066445],
 [4255.167479322822, 2407.7276280205333, 4730.522130639737],
 [],
 [1212.689453510204, 6678.2398172289195],
 [6734.402248734606,
  2303.059026711226,
  4026.0748046728613,
  1639.9879252485293,
  4004.848349838472],
 [3414.9335568357255, 406.50468692586645],
 [3475.5574249469546, 266.46866065914196, 6727.630687748392],
 [4300.32856706736, 4684.409831595018],
 [5046.313587483294, 5350.96023020896],
 [949.5586703568835, 6430.0228387148745],
 [4311.793357612073, 4342.896630316436],
 [6992.013300275072,
  2829.215626264348,
  4717.009396971893,
  4774.604522000544,
  2935.6101414967457],
 [6308.012842463254,
  794.6834690249661,
  6250.72016172469,
  6314.703415719816,
  4661.678425116901],
 [5458.607340866937,
  973.5562788139167,
  7516.727691061809,
  7580.714075468816,
  5918.448415542233],
 [6130.062152074665, 3856.018838365987, 6157.3466641443065, 5767.449281943492],
 [7848.664464926556, 5756.12637419227, 5056.8471733087035, 4863.1396312367115],
 [6287.78735650724, 6759.738477683353],
 [6726.3949169239595, 7233.46145346182],
 [5469.448635225235, 2522.21688942944, 2559.2636203433945, 1349.4773748077785],
 [947.5693968390193, 2912.50484950889],
 [7744.875115924169, 1651.0929669632199, 1386.4171698398525],
 [7331.138780354621, 2327.9142639331317, 2138.8093485477475],
 [2296.7146946383614, 1935.72938179989],
 [2304.4578684937396, 2000.1920956652348],
 [6491.078316760481, 2929.2454458411794, 2281.375234967976],
 [4308.733318490942, 2205.2603099792154, 5058.923737395065],
 [885.1705786417339,
  1360.486544716179,
  5133.085320902967,
  4227.77442032961,
  6844.317356863463],
 [5797.896602130495,
  4925.789164987576,
  1909.1745026341046,
  3410.601282949416,
  1983.867986423423,
  4220.061861244646,
  1770.401550377519],
 [6209.707407859549,
  5133.7344070732615,
  2172.099517825009,
  2573.3824450195807,
  1663.2990062873425,
  3544.1273753124033,
  898.1955775167943],
 [7829.400579518335,
  6408.11266958288,
  4011.8374317147855,
  755.8635954237913,
  2702.060599477334,
  2362.424399349118,
  1539.8746057299998],
 [6502.414267665593,
  5319.288371776618,
  2472.3890163837323,
  2068.602789679301,
  1692.793265768711,
  3181.1450715565898,
  354.2119604590035],
 [7737.398213137702, 7690.409658619916],
 [7603.097422233125, 7617.909181830284, 6669.685165776315],
 [4851.080537109796, 1523.9730863225425],
 [4375.185108672823, 1233.0088403093116],
 [4900.687862818891, 3500.5716138160387],
 [4944.403249885507, 4386.673595308772],
 [4190.411590126637, 3565.8788693709334],
 [3777.1235769955106, 3900.6865577879607],
 [2991.0036490090934, 3487.038566441567],
 [7952.455384730623, 7915.039753693077, 4546.848217187593],
 [3311.553223058246, 1257.8055977097545],
 [6656.8679943988645],
 [795.0512937481562, 6268.154733601983],
 [],
 [],
 [4666.960497635178],
 [5604.821035059188,
  1261.845203137196,
  2797.144277247098,
  654.9848413383312,
  2848.504447393811],
 [6204.585248189425,
  2293.1258611662956,
  2778.850258455974,
  685.43035586584,
  3507.4234073316948],
 [7610.94009614429, 2134.690987864223, 2022.48077423067],
 [7677.433412535348, 2048.0370457910954, 1942.6338490041471],
 [6992.610508742377, 2302.8077713306293, 1747.8582293115323],
 [6951.6002221926265, 2356.9975789512846, 1776.5843450163143],
 [6122.170902155952,
  2263.9413798635765,
  2675.1115829166665,
  666.9709166029495,
  3435.173520211892],
 [7099.589505692757,
  4207.718238609881,
  1411.5855609670136,
  1023.4738467602399,
  1549.9081146072374,
  1606.3678789920173],
 [2286.617865796833, 2089.363320746014, 7587.309678505165],
 [7167.124474930433, 7989.880756109498],
 [1661.8577713107607, 2629.1918888588866],
 [1682.3056617937864, 2826.8231733902517],
 [678.8250705765249, 3156.358936623191],
 [338.2183297509033, 3986.006162706073],
 [1823.429975512591, 5644.156248079527],
 [7554.127684556821, 2270.4297686715695, 6091.159440725474],
 [6905.352179828437, 7295.944906753668, 6584.272486384656],
 [6980.951949929449, 3777.316001786302, 6170.192266858627, 5501.842441486144],
 [5776.315047351675],
 [6547.953271223376, 6971.556415061363],
 [4119.607450158733, 306.3103749180346],
 [4661.8167708810115, 4116.356224076804],
 [7933.601604238613],
 [7766.512759207179, 1953.4676243084566, 1864.9416289359035],
 [95.31442524105721, 3867.6133396344635],
 [5156.867275344763,
  4056.892781477709,
  1117.0922111945424,
  3363.9615513183803,
  2725.432372501619,
  4537.918928874929,
  1658.897302517718],
 [2260.5522247581944,
  1188.1047679543985,
  7479.107555203671,
  1883.666854136372,
  6104.234696037057,
  5656.608862805587,
  7446.488592365876,
  4530.259778374987],
 [4440.713941458587, 6588.031483993987, 5834.682246087149],
 [2748.963405698413,
  1116.248284498511,
  7450.069332891712,
  2315.1454690444994,
  5951.670872555397,
  5923.173643970868,
  7417.026752852153,
  4552.960891793019],
 [2414.447225748819,
  845.9130385311583,
  7257.114302963356,
  2305.791590156257,
  6162.008282886557,
  6004.149305300775,
  7595.621920125695,
  4705.716593262504],
 [5877.721929262578],
 [3325.75074688941, 4035.945032794173],
 [724.0808973020555, 1440.5608118713742],
 [490.73308024666017, 1212.3529152824165],
 [1290.3516416429331, 1865.521906019009],
 [4588.864654256155, 2247.883537518433, 2311.814458740181, 1046.4311967445979],
 [1105.1506753527758, 3609.536099582457],
 [852.3732838257366, 3672.4565014297946],
 [758.5969775317183, 3589.7849396375295],
 [5002.184527632845, 1503.1012861177144],
 [5148.467649841872, 1739.4907921588149],
 [5867.901405099915,
  4416.917308381644,
  2296.182684094926,
  2627.0044087269457,
  3280.0088661242967,
  4155.875257772889,
  1568.4519133876968],
 [5719.527589031503],
 [7627.147829731873,
  5302.853317509417,
  1133.0019589568824,
  3453.6226920043823,
  1986.9035732854582,
  2745.094489501572],
 [7181.750702859518,
  4799.339951294896,
  693.9147354187571,
  3036.728979915295,
  1945.6798078196455,
  2230.9921829924365],
 [5666.91522078013,
  286.57208153475466,
  6532.336961538565,
  6595.797220212759,
  4853.902755844826],
 [5557.513327805346,
  300.9827007693937,
  6594.89024649387,
  6658.209164327756,
  4905.22225842046],
 [7750.469774351452, 2208.221155107979, 5972.087894428032],
 [6263.263852352933,
  1842.2075979316312,
  3785.0376767368266,
  1589.97065565343,
  3566.1241128722118],
 [382.04074498369863,
  1636.7695082978435,
  5165.276827020734,
  4238.3516878239825,
  7987.614098841129,
  6930.166713917829],
 [5868.703259036867,
  1458.205633409346,
  3161.181914824233,
  949.291161733541,
  3123.7317654564786],
 [5371.499315772779,
  4106.408533515867,
  1463.6287862940503,
  3002.395654949973,
  2860.466316927957,
  4333.291156193846,
  1425.476822011547],
 [3177.7956644366463,
  2057.068903838773,
  965.7867049798347,
  5191.3267496279705,
  4727.256796645304,
  6508.719563718788,
  3592.7111993296426],
 [6346.257423793491,
  5543.859482651496,
  2540.068079110036,
  3415.569268916357,
  1575.2159861063476,
  3978.1306694287564,
  1962.8349481674666],
 [4328.292488781839,
  3233.7554625360376,
  327.4962180700946,
  4111.476143503463,
  3542.2535522188214,
  5354.580426336166,
  2449.7108807260465],
 [6503.993729704714,
  5286.530111740647,
  2490.6410732150543,
  1990.1190080938995,
  1821.5770627172717,
  3176.0508999086996,
  269.36253115660344],
 [3776.888126343671,
  2315.3762470585025,
  1370.6122174234356,
  4691.942597457834,
  4683.609811957007,
  6138.051804247285,
  3271.1322601779334],
 [2415.761247758036,
  1291.4296134545964,
  7619.386944139925,
  1750.6975148752938,
  5949.805402248966,
  5521.864888614281,
  7295.978310163695,
  4379.945677630682],
 [2370.4822561767332,
  1224.0098991979398,
  7558.619093752801,
  1814.9295875017838,
  5998.4509296323895,
  5585.131081998603,
  7350.437452359176,
  4434.748091894383],
 [5503.173957814924,
  4271.052645211195,
  1539.5646826959637,
  2895.4414166668303,
  2659.667263328062,
  4184.734380081793,
  1269.016865729248],
 [4034.011320433338,
  2663.154843101773,
  6825.865200167545,
  4655.081210226299,
  7292.978146942981,
  7891.567781825989,
  6290.657922278995],
 [4242.671444913246,
  2872.6505019427436,
  1043.1808444779906,
  4146.739253896837,
  4076.368654245107,
  5559.254508397135,
  2674.31098383757],
 [2982.3922842165216,
  1426.060847113668,
  7812.430427653068,
  1952.6271446020678,
  5593.948509264614,
  5537.051578018207,
  7046.009239842091,
  4173.519723800646],
 [3127.3602953039967,
  1650.0133069778271,
  1656.6146221133104,
  5356.4868781115165,
  5244.66866303631,
  6789.012274661702,
  3903.969545077461],
 [1484.8232299883405,
  717.0146260609041,
  5730.159183868345,
  3738.726584924463,
  7679.083946971463,
  7492.640258599673,
  6232.607595048089],
 [2302.8935950234086,
  1897.0319001188232,
  7730.4952948335595,
  1845.3416635001608,
  6274.09887396969,
  5471.959248149297,
  7485.076996536755,
  4602.215233666145],
 [2639.7218073440813,
  2149.587239043866,
  1554.513405450702,
  5985.86469356184,
  5139.189246655879,
  7172.70588375158,
  4301.426175518442],
 [5763.272251021654,
  4975.449755301489,
  1991.2350299540387,
  3678.443197046513,
  2096.7312779316403,
  4416.940472769469,
  2064.842382015887],
 [5732.790635958206,
  4792.055345284975,
  1769.9323995359268,
  3255.449236406734,
  2028.9482596082203,
  4156.448834035379,
  1573.9791210380308],
 [2500.909877996755,
  1037.6991851976122,
  7461.998678526025,
  2049.568482127402,
  5979.9288429962,
  5763.715047023714,
  7393.778168867979,
  4494.226013784469],
 [2362.701960919095,
  961.6075442678911,
  7377.713179632606,
  2077.3405395191276,
  6085.75520617477,
  5816.908744641715,
  7485.541962777097,
  4579.798966015499],
 [2298.6850623391724,
  970.7282484683129,
  7366.941606778736,
  2052.6788309571125,
  6120.065260481732,
  5806.655562205252,
  7506.611320301486,
  4596.628047731835],
 [4919.967227231274, 5785.43223183428, 752.6210378093307],
 [5244.180350068915,
  1188.606991453253,
  6542.957522281443,
  6604.355156218553,
  4783.359722030142],
 [5294.881517357704,
  4351.1203851324135,
  1328.5628633350539,
  3535.466547811192,
  2469.169535131695,
  4535.2222844818,
  1814.8055114912008],
 [4284.682732345317, 3749.1093500141],
 [1954.7130072481348, 3350.8631460160136],
 [1968.998396365267, 3423.323061616591],
 [1209.2811463001156, 3571.945307718164],
 [2571.274949830098, 3243.668178282477],
 [3354.506985058091, 3580.2634420127824],
 [1546.4846363377133, 2063.6802547523134],
 [4827.694467013262,
  1187.509198862606,
  6981.946039937535,
  7043.414363356444,
  5223.162671720649],
 [3928.180260609146,
  1865.2100235609353,
  7830.022324399312,
  7890.676608412584,
  6058.651726712404],
 [5292.621644064306,
  2899.756384857351,
  2937.7292024293206,
  1616.1684243051657],
 [3119.8532364180173, 700.9661061922737],
 [3852.144204595745, 60.489888606721145],
 [7924.024801005079, 5588.011342690372, 6241.0506903651885],
 [2968.801140634795, 853.2423513957616],
 [356.85645834232366, 3467.782813798221],
 [7716.237516146253,
  5487.362923813986,
  1450.9323526210935,
  3783.8259232669857,
  2283.106520182625,
  3001.7727504656614],
 [5788.790189922569,
  1368.5903251645632,
  3392.457519014057,
  1403.2580462248425,
  3093.6150737157423],
 [7841.724065118472,
  5346.691350229887,
  929.8464447157246,
  3054.5433688355256,
  1371.4592993704655,
  2655.5921213848897],
 [5839.3923536265875,
  1429.926919085928,
  3483.829511095777,
  1496.1593166418938,
  3155.636033631549],
 [7899.231725616799,
  5445.360912960313,
  1056.3820499595615,
  3224.0890116842425,
  1508.933125038349,
  2777.049865515973],
 [1928.6978273114362, 5314.120184611149],
 [1200.2715832505237, 5423.313985011344],
 [2067.5547408940547, 6513.433716043126],
 [885.8734527797299, 5906.019759868509],
 [4359.158770556264],
 [],
 [],
 [],
 [6982.209192689019],
 [],
 [],
 [5715.379397081908],
 [],
 [],
 [7961.156495295204],
 [],
 [],
 [],
 [],
 [],
 [7910.614067226691],
 [],
 [6139.998910863549, 456.1542768827397],
 [7322.835055388104, 2534.104120149562, 6344.75890027151],
 [7757.869941715754, 7771.212892867011, 6858.994780790507],
 [6493.858777850377, 911.4881459397022],
 [5157.0739906463095, 2299.4629878336277, 6310.274578061248],
 [5097.918483851235, 2276.4940589019366, 6219.508549318593],
 [5227.721895604657, 2340.428096483163, 6395.313818703071],
 [5329.290641988367, 2457.0835831805834, 6392.440300326786],
 [3866.2144591120045, 823.0386322400329],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [6345.595225210051],
 [],
 [],
 [6348.729605751075,
  1083.1973720172375,
  5719.861589402232,
  5783.278722788568,
  4043.196563040462],
 [5176.301737989163,
  363.53291241887234,
  7007.807289381277,
  7071.041656501045,
  5310.644316491164],
 [5310.74887241029,
  275.17678238151495,
  6864.173855683478,
  6927.443584000618,
  5169.897441945353],
 [5507.501457817484,
  244.3112009571869,
  6665.611831006062,
  6728.956850695949,
  4977.471940655671],
 [5673.099699523059,
  354.709624139254,
  6486.974692589682,
  6550.356379544603,
  4802.486383225759],
 [5384.699069001366,
  873.8056693874595,
  7484.329350644317,
  7548.284995678708,
  5872.152678805186],
 [5452.498729819106,
  196.205912928938,
  6743.4502205970375,
  6806.821284143729,
  5056.851745336311],
 [5551.9011298555615,
  185.50187714013887,
  6662.224442899163,
  6725.669643494153,
  4981.832709082737],
 [5668.694818998593,
  234.95766119403203,
  6566.930810692877,
  6630.458432525991,
  4894.227075401181],
 [5564.119838644853, 4518.824929579331],
 [4585.909458682647,
  1079.5321138968063,
  7860.511876955573,
  7923.930049916056,
  6172.956031519392],
 [5556.977603670339,
  64.23487188408691,
  6795.572791344134,
  6859.233929814056,
  5135.130608997109],
 [5672.9439108587685,
  160.62127769329868,
  6701.284883214059,
  6765.008687122107,
  5049.033117413131],
 [5444.529704281605,
  127.60592225735505,
  6915.934594262349,
  6979.567976766555,
  5251.735236200465],
 [5506.491631093041,
  195.5510981645082,
  6924.803708506408,
  6988.537228379891,
  5272.408639875753],
 [5436.541712268628,
  369.11038009534116,
  7086.308666800806,
  7150.1037767337675,
  5441.651973294228],
 [4930.074978696362,
  914.534461789391,
  7697.110430246994,
  7760.834652387098,
  6039.4463278947915],
 [4986.525642601661,
  914.546966622341,
  7685.020797263774,
  7748.794184804751,
  6033.923787651504],
 [3580.550675597863, 3824.0833651234484, 3885.598820488389, 2726.650696066683],
 [5538.163028978545,
  552.5741162288309,
  7144.030949601829,
  7207.947489816939,
  5522.491205682705],
 [7410.3517874380705,
  5905.89827267701,
  3815.1699325268523,
  1574.0190064696158,
  3339.1966434436276,
  3170.003780737615,
  1855.4023506654653],
 [7567.605024814572,
  5203.64131769097,
  984.014608019071,
  3300.0764208527116,
  1872.4593524549637,
  2618.3838446145105],
 [1720.276889177048,
  654.3627383480765,
  6861.727354390128,
  2502.3189358347195,
  6680.3101491808275,
  6275.282841228292,
  5131.075503720167],
 [3627.0597352804957, 198.78912488374286],
 [6985.963181992975],
 [],
 [6034.177447325752,
  1675.9471537475813,
  3802.789198931241,
  1812.464051744004,
  3391.4316957121746],
 [2073.643191094564, 2238.386577451633],
 [7632.867483833533,
  5191.438819697015,
  842.243213027738,
  3099.1329002504444,
  1608.6465218413725,
  2543.762732118284],
 [7816.359559138372,
  5533.799922026184,
  1382.6706601449769,
  3692.2139470603574,
  2107.0269224164663,
  2995.4145494754803],
 [4288.002980690746,
  4273.086125121428,
  2558.2566464925603,
  6156.165248982375,
  4527.798181456929,
  6925.832485357483,
  4465.033558187036],
 [3675.9831609719736,
  3177.7364978929,
  1206.0760985280642,
  5347.76503100895,
  4205.024841824564,
  6383.987791100454,
  3623.3151497072317],
 [6615.653763864008,
  5702.46385387103,
  2680.2721696359426,
  2909.4139476956984,
  1168.5128210493535,
  3497.943159267264,
  1523.0240885237367],
 [5004.207096026388, 7601.319932383648],
 [5985.715649451475,
  1608.6347737105145,
  3150.335981958672,
  818.3099953069919,
  3231.420818365663],
 [7180.042752760932],
 [317.58836056750016],
 [1038.17572026163],
 [5993.568951124914],
 [3944.261447962177, 350.1288091123153],
 [2536.2375672562207, 3922.3452748423274],
 [5108.9367894141305,
  4018.320665742768,
  1068.0607865850384,
  3418.522733858626,
  2760.9239260135896,
  4588.646371336861,
  1712.4566706322928],
 [4323.7278546214675, 550.1648673868443],
 [],
 [827.4478624189278,
  1798.2676896196651,
  6210.772029823278,
  3465.1241338049717,
  7870.577759673178,
  7099.639452750974,
  6221.917612118153],
 [],
 [6086.12428637922,
  5288.485836031935,
  2291.168842712511,
  3518.792837957064,
  1801.0715055590115,
  4166.254082880345,
  1982.8481759570407],
 [1952.3878159786186],
 [6823.623830584289, 2473.8355011248186, 1989.7776406853395],
 [7175.307398395782,
  4354.224813955029,
  1027.6238773510897,
  1428.786980076959,
  1304.7134842208404,
  1643.441837513783],
 [4887.665538197924],
 [7777.568628148733, 1787.7755179502963, 1640.905648468287],
 [2064.5226741080232,
  1695.0311396188245,
  7487.374121491678,
  2040.694152697943,
  6457.610238995562,
  5702.509107897087,
  7691.079656587552,
  4798.609722261151],
 [6721.798072888193],
 [3226.0851505561573, 594.9493425853742],
 [7395.010038371793, 7758.770933036693],
 [],
 [3928.5504517232457, 3912.763896400024, 3624.946834651155, 6888.513820249737],
 [4773.352937950948, 4352.062866177095],
 [4052.1337091391333, 234.2706811617149],
 [3937.1469310426123, 120.35847920946283],
 [5646.180883555992,
  1864.280342113902,
  2256.587439407999,
  419.3927240964017,
  2958.683989499911],
 [3476.933023631228, 1576.1116000725729],
 [],
 [],
 [],
 [4601.2336110559745,
  3651.0252873415243,
  633.3298985892467,
  4040.280340598376,
  3171.189923584799,
  5158.0777741258,
  2323.129366981548],
 [5410.8140375687135,
  4083.5324226475327,
  1609.3789774569884,
  2953.260231646814,
  3020.907201334051,
  4348.417286552819,
  1481.0937817611268],
 [5863.276768585554,
  4770.252178787558,
  1821.99586783489,
  2789.33183904955,
  2026.3188209645486,
  3857.067938222622,
  1065.803326151929],
 [5866.857724573101,
  4764.806020758604,
  1825.2136883666085,
  2766.933494729636,
  2038.394150687548,
  3846.917790504929,
  1042.1553587410908],
 [5914.0780712445885,
  4785.8197865794045,
  1874.182490310866,
  2673.8969101391267,
  2044.407938561175,
  3784.5322116637212,
  948.1906993535539],
 [5586.658769406787,
  4563.871156322378,
  1563.252920316279,
  3154.457543793913,
  2213.5745218872707,
  4181.962185509414,
  1433.1278425143312],
 [5301.887461131361,
  4320.763438901567,
  1302.2262072154826,
  3452.2471112859803,
  2474.2520177643146,
  4487.043662921288,
  1727.699353538192],
 [5192.376808183971,
  4155.975283349423,
  1159.273518252454,
  3432.9928887628416,
  2621.3832799602196,
  4539.941282971081,
  1710.3538268432244],
 [5669.009939676426,
  4490.396511769761,
  1651.3349418396206,
  2799.859482030765,
  2380.459900829287,
  4011.070081428503,
  1106.9785610225144],
 [5923.795232279735,
  4736.04149813999,
  1905.1089318641477,
  2557.148479694281,
  2179.4138264269322,
  3756.1494994724417,
  853.8762347144207],
 [5839.367460145549,
  4621.365515556667,
  1844.4006544086153,
  2591.7558748348642,
  2336.4350880417483,
  3842.727296164968,
  926.9079596522038],
 [5636.070152351679,
  4393.181962518542,
  1675.9099675101236,
  2759.0932704499423,
  2577.611091342895,
  4055.216357125378,
  1141.2799706269882],
 [4239.020978290473, 4479.925785226089],
 [5603.01164900634,
  4384.326244984382,
  1619.2524478724586,
  2812.7088533701135,
  2538.4431907256103,
  4080.320860748936,
  1164.125609918808],
 [4716.942203889177,
  3710.0871898752553,
  693.10450094534,
  3866.3157101009797,
  3079.9795794968245,
  5010.65069644681,
  2155.0248095483507],
 [5207.611416404542,
  4033.042121275072,
  1205.0105723415336,
  3227.8039511057605,
  2795.5100478672825,
  4472.026421775969,
  1561.4322412137144],
 [5327.159942340707,
  4152.602262438928,
  1318.6752977711449,
  3117.2045306428718,
  2684.127321645227,
  4352.541146799982,
  1443.505704542378],
 [5316.196586062571,
  4094.3092118710697,
  1354.6535623781901,
  3082.699550906199,
  2796.9749350645884,
  4369.633381176249,
  1453.38645072876],
 [5277.496797588601,
  4066.863660554056,
  1305.961668795479,
  3128.658838146676,
  2805.6618991028918,
  4405.710897779201,
  1489.6274455069413],
 [4500.59631080948,
  3513.006924594729,
  490.4518566030556,
  4070.787236093265,
  3288.704193721078,
  5227.092522136287,
  2364.8062930706587],
 [3765.1985207090524,
  3270.8374398036426,
  1225.7667495911496,
  5306.766552182697,
  4132.105881122954,
  6326.004920078568,
  3581.3446475947217],
 [4127.410780224445,
  3181.9294602781274,
  228.46513098575267,
  4429.802184573981,
  3650.4185125612557,
  5602.447675001261,
  2732.270909003275],
 [4045.551933642214,
  3195.834861529415,
  437.8306616913463,
  4607.95938695677,
  3716.0780554573853,
  5739.209541741719,
  2897.25105899169],
 [3475.1267814178836,
  2561.8462188638514,
  581.09132930704,
  5009.541567299466,
  4305.613642213336,
  6232.1484366341765,
  3339.398437460835],
 [4301.867785476403,
  3274.199306923142,
  261.4467668775771,
  4194.9856813085025,
  3514.061420671953,
  5398.191152769953,
  2510.0294668750626],
 [4311.459390493661,
  3228.4777242733544,
  298.6421061144251,
  4136.169416637055,
  3548.2203495000444,
  5373.201106215391,
  2470.5106070261845],
 [3798.9948111354215,
  2704.3676845840987,
  344.7902943046033,
  4603.570815692017,
  4074.908181352768,
  5880.695367052284,
  2968.851494072597],
 [5449.911284173092,
  4068.732080154037,
  1764.99360928676,
  2939.1139231432467,
  3191.18081774738,
  4387.206334058044,
  1582.5241034285584],
 [6499.783127022353,
  5009.203941215499,
  2954.256319460047,
  2172.587785037984,
  3307.1956873964905,
  3763.4234665727818,
  1601.6137818513412],
 [3601.7336527468924,
  2521.441828562058,
  503.59631392871023,
  4796.093000513571,
  4263.472527326074,
  6077.919901547587,
  3165.669716027789],
 [3974.897193197094,
  2625.768077286872,
  963.0328011055126,
  4407.099549529936,
  4259.438479732821,
  5805.273553287084,
  2908.628725632338],
 [7745.915351320725,
  4104.33997470804,
  4045.2020872219814,
  2498.837665222932,
  5170.246226601638],
 [5273.612670321036,
  3663.7852084452816,
  3699.1900145665745,
  2362.6410748328312],
 [5071.770587121437, 4707.422035717781, 3481.0502554644045, 6005.632151818288],
 [4895.669406400181, 4518.780715178888, 3309.639087830168, 5817.109905199473],
 [7951.765653585773,
  4409.411388836714,
  4218.872296937627,
  2809.982607991039,
  5417.442927897106],
 [7687.519593447895,
  4348.373448651792,
  3927.031053824364,
  2784.804350581296,
  5224.828777421607],
 [7607.8105731308315,
  4052.034344829622,
  3888.5849661183697,
  2456.2706951837768,
  5059.64992557745],
 [7009.367467943194,
  3480.1455798040834,
  3309.3642333001735,
  1906.0343223259677,
  4452.362007083786],
 [7384.435568204369,
  3501.080327514523,
  3803.9076576875336,
  1898.9554814815538,
  4721.758345067336],
 [6582.894045598014,
  2489.578646549502,
  3238.8220887744897,
  940.1494818690763,
  3854.2576988186793],
 [5121.122430455863,
  3506.0350095649587,
  2511.2741115792433,
  3905.378921685159,
  4647.817520531817,
  5486.326667006386,
  2960.83218975992],
 [4192.903335802778,
  3819.280235426135,
  1654.5627844703954,
  5344.799217109815,
  3931.640744024018,
  6236.258770241334,
  3629.6085634116444],
 [4023.6537415026955,
  3722.784943025619,
  1749.5285690497954,
  5553.4126287817,
  4151.308009784412,
  6455.459904346393,
  3835.294228596487],
 [3825.8459390934268,
  3551.8037257118012,
  1736.9160659785277,
  5672.154937967032,
  4321.8278925163795,
  6605.90937213911,
  3949.4736686334354],
 [7204.6309152662525,
  6349.927072573449,
  3328.656923906463,
  3024.3349568974586,
  816.0096093997121,
  3283.5656303708665,
  1962.6474825963926],
 [6845.572647497041,
  6017.388036624433,
  3001.421843855754,
  3192.040003188531,
  1131.7251415328235,
  3585.0841433269597,
  1943.4689729280628],
 [6826.995912887136,
  5962.039374166843,
  2940.7738875263944,
  3041.7837231748795,
  1054.5733727140089,
  3483.0629235301753,
  1778.1120008579783],
 [6205.984693675047,
  5350.2867739813555,
  2333.4181309976448,
  3274.9363525719177,
  1613.3032765807384,
  3941.8055234292456,
  1751.0344702972395],
 [1117.681855388462, 1662.403084582782],
 [5287.759684183707, 5118.991241136874, 3680.1588440558075, 6335.510013327217],
 [4702.941020959417, 4530.517789280114, 3098.7122946394848, 5731.38004264842],
 [4762.596207952059, 4628.283781432984, 3155.9366782343154, 5813.481740114039],
 [4630.331599751851, 4560.223673879643, 3022.1876612046194, 5710.855565850031],
 [7493.760517044457, 4420.939340477608, 4424.370153180842, 3945.2239136229173],
 [4236.4189257473445, 2606.38070294385, 4449.656871695788],
 [3040.8750328620968, 3384.935091388558, 3324.6709779525427],
 [3659.1490270026343, 2591.3101358060662, 4095.703816584965],
 [3646.0799536451773, 2507.7330991186536, 4186.080946501223],
 [3637.5868138155333, 2433.8569109540763, 4266.950593640648],
 [3131.918254764846,
  1774.7979308121605,
  1375.0408622042096,
  5267.844204422433,
  5033.734410945931,
  6662.587958580092,
  3758.3276393240035],
 [3525.7670554627257, 2189.2570432597436, 4497.349631210598],
 [3612.0966820989424, 2058.3719030908405, 4682.3773041540335],
 [4170.589108898903, 2118.1358918746555, 5027.630668710426],
 [3350.378454837723, 2136.2943324588246, 4498.796086415986],
 [4181.593215232499, 2266.1302745969583, 4845.107356015518],
 [5016.408982836527, 2164.366093280989, 6262.230869472228],
 [4515.276274365026, 823.8782419659918],
 [5968.156258171404,
  2760.4196531237267,
  7000.225418540671,
  6360.3210605173135],
 [5383.38383940487, 2566.9633388028137, 6285.535759075298],
 [5484.372848037681, 2616.2777216977524, 6432.8487934220975],
 [],
 [5299.34080391445, 3005.524232319651, 5280.918420056343],
 [7546.315903888953, 3936.321729169168],
 [4347.580673695805, 5757.817092353513, 2004.8038599308932],
 [4717.533932370351],
 [6106.231861889073],
 [6871.960155460717, 6472.615967500028],
 [4255.041917633975],
 [2350.6835482865854, 6022.1648063934845],
 [],
 [],
 [],
 [506.6980410730984],
 [5508.123730470849],
 [1444.6471681806145],
 [7094.828873232955,
  5873.038822080183,
  3074.906895917808,
  1488.568891198585,
  1497.0141186460348,
  2584.8396739447167,
  343.12706048027695],
 [3412.042592320665],
 [1391.0033153251309],
 [7123.801476646384],
 [3294.4372697132967],
 [1311.894573932039],
 [2573.671657921138],
 [795.5201875935859],
 [7358.682154036135],
 [1629.6662403231658],
 [5277.946061126178, 5313.876437430169, 3673.3911911097784, 6432.34307816544],
 [1980.5636136778164,
  1932.9271791299327,
  7419.549192338764,
  2293.959357029433,
  6725.655920309263,
  5859.944902781434,
  7916.973295997445,
  5045.502742659002],
 [],
 [2661.1855956631402, 2877.709178279846],
 [2491.024660590386, 3686.757151377298],
 [2673.856055355643, 3921.732051926248],
 [2667.122190440965, 5376.515458943381, 7762.3245082692065],
 [6903.048663662266,
  2594.3000792628036,
  3768.8385172450894,
  1317.064521703454,
  4145.889954658031],
 [2467.4041851353295, 4030.2180899964605],
 [3198.6992280850604, 3908.8779278920133],
 [3360.68154121484, 4466.084311776622, 7493.088735884618],
 [2851.8252483515216, 4119.87202323442, 7888.526965439057],
 [2108.1118990937607],
 [2247.1544888913436],
 [4835.952853658997],
 [975.0866338559322],
 [853.706168979011],
 [833.6665393263786],
 [492.5182070115982],
 [2973.5436681237024, 5300.854890750342],
 [3963.7001216213357, 7321.85322548102],
 [7292.4549635245085, 3022.1137646279803, 6734.994447498044],
 [4920.066776943922],
 [7853.901441124583, 7358.388594051761, 7569.835127415921],
 [5287.734771107638],
 [5385.88986985881],
 [5530.551552564941,
  720.9310757704205,
  7273.539316632346,
  7337.498458073584,
  5664.076543530913],
 [7064.4306658671985, 7832.853452405839],
 [547.8169022522891, 5749.056293482935],
 [286.52086985443395, 5241.425325300973],
 [309.5702430703805, 5645.7101623518765],
 [4797.4561625706265, 7937.600285855978],
 [5605.938144478289,
  2627.4575853923975,
  2660.8085202381285,
  1546.8493622460294],
 [5401.888266925058, 5338.686230326826, 7840.072457452495, 7136.61778021733],
 [7167.639865859165, 840.1102094835525, 810.2234982924565, 2041.3922842926315],
 [4822.634051319299, 4758.856037758522, 6529.476260608248],
 [4544.968074681722, 4487.045347659742, 7627.624610379937, 6327.507738365262],
 [6581.852297330649,
  1498.198862390731,
  1508.3962796131157,
  1602.2640736445617],
 [6362.704403521747,
  1764.6797574399104,
  1782.3257467825767,
  1517.2447871971272],
 [6376.489830353054,
  1416.1468076902852,
  1435.591299831186,
  1372.4826726649985],
 [5986.60735698185, 1707.6424135043696, 1738.8820084872364, 1120.336782597406],
 [4926.309254232598,
  2706.8098515162915,
  2753.2877575225284,
  1187.5295698988132],
 [4654.718204917268, 2811.011685367982, 2861.3871567140973, 1166.647588357723],
 [5764.050559896742, 1610.3244990836554, 1651.103054399501, 807.9969713652357],
 [5928.331101597664, 1499.039175346742, 1535.8544788967597, 932.4309644372996],
 [6058.5842388077845,
  1346.6427570163585,
  1381.1630042783358,
  1008.9148446473428],
 [4800.971118311405, 2407.828282618298, 2460.8878651207788, 723.3544366255037],
 [4626.4810758737285,
  2599.5010313343682,
  2653.1953868653222,
  884.0036582508951],
 [4103.469494042321,
  2998.0110131641945,
  3055.4808854238454,
  1218.1429890909812],
 [6341.2815590467435,
  1083.0458455551625,
  1109.0459943102724,
  1239.698704605077],
 [5551.067965013317,
  1677.3618311394155,
  1724.2112152904897,
  590.2480449461874],
 [6012.178447862283, 1274.6135098291327, 1313.001122050686, 929.7572177885326],
 [6203.946524334894,
  1033.3525079643014,
  1068.6260195451164,
  1086.0876474439408],
 [5980.741382709222,
  1230.8548753276787,
  1272.0010623764567,
  880.3016580512249],
 [5950.516049084824, 1191.056403141447, 1234.996773197441, 836.2181337355753],
 [6105.41219940156, 964.6733260722272, 1008.5896157611418, 979.2136173862119],
 [5611.904030589596,
  1478.7192347812672,
  1528.6458830806127,
  525.0018824250451],
 [6243.962244585304, 5427.060673451532, 5452.687594648016, 4281.64649961634],
 [2933.3752153272076],
 [7266.980160478239,
  4834.946727027382,
  5601.112877495297,
  5641.503788568612,
  4089.214524619047],
 [5474.838883568864, 5258.163513160969, 5291.751763245086, 3916.3737897976544],
 [4947.331701877878, 4668.025988128421, 4706.626314435773, 3223.963866702424],
 [6504.448581364832, 4790.449289314431, 4810.429246844599, 3828.69372243597],
 [5953.063506922883, 3308.285148775169, 3333.1224020912764, 2354.183808522761],
 [7113.194668183935,
  3215.8017168714114,
  3217.8626553262766,
  2925.8713416561263],
 [2905.9660699792644, 2866.0835659275676, 3774.9296507520407],
 [7904.601261082407,
  2192.1490527664787,
  2161.6052268735452,
  2941.0766195894303],
 [4228.260290733109, 4167.196726001089, 5685.125236046664],
 [5644.441545770267,
  2028.8708206538868,
  2066.6211436032327,
  1021.9682673602103],
 [6802.167399133956,
  2174.1262549856315,
  2177.855048393311,
  2098.5519441507704],
 [6715.0903231545835,
  3709.0334050673,
  5384.946022956813,
  5434.528686384539,
  3693.0276364655174],
 [4409.630803140838,
  3317.945737175663,
  3367.4409239320016,
  1667.0072248566069],
 [6911.750488715946,
  1605.1441298021737,
  1601.9918830989839,
  1939.2990559615996],
 [1987.8095300886885, 1866.042966447098],
 [4108.458301220088, 4307.244198350871],
 [4183.271550573578, 4542.1035523844785],
 [3933.5541839441235, 4325.755656641641],
 [3728.57281340929, 4260.029378843005],
 [4013.4825630979853, 4395.166392357453],
 [3823.889773602211, 4218.21518611182],
 [2542.2748238862478, 3378.5313139434015],
 [2965.227524001298, 3757.8035487338843],
 [2459.4397968412927, 3620.658500426779],
 [2160.872091633434, 2555.4490809975055],
 [3500.775099069956, 3844.195124653708],
 [1470.078733883983, 2604.25518759211],
 [2859.562923085803, 3546.068341626875],
 [2943.272297059092, 3587.0595205911877],
 [2803.2309171280594, 3517.9241446857636],
 [2700.658651864131, 3529.0504300561297],
 [2743.4907294128507, 3458.2919700978537],
 [2682.1986272677564, 3410.9063561987186],
 [2559.4597715699215, 3257.993508553905],
 [2464.627379530224, 3398.1748432913837],
 [1615.5684630875605, 2443.543474344838],
 [1743.373255429088, 2299.308880505508],
 [1824.9074221575427, 2170.3705813969927],
 [2038.1048327901083, 1950.539208335729],
 [1381.3243230198304, 2449.6907206997616],
 [1851.481079173978, 2080.6560983314357],
 [1546.813324352315, 2287.599449577747],
 [1597.0813658517934, 2439.1840041689807],
 [2500.7274718062254, 1321.8767792066503],
 [1527.4333168483777, 2808.580162104404],
 [1087.7885328997152, 2841.1538737900855],
 [679.0759806373032, 3336.4948325813343],
 [1042.6272974430128, 2812.0642316216613],
 [823.4373304551169, 3374.5054012760493],
 [1203.2405202224954, 2623.6082461818733],
 [770.0015499990003, 3109.7911942060546],
 [969.3598890843507, 2854.419530833048],
 [637.0069394561378, 3299.0900742701824],
 [731.9122516042299, 3358.402904230029],
 [556.7898816466995, 3268.662216671207],
 [830.2918454532053, 2990.463796693],
 [3966.086847831347, 331.1374761421229],
 [3121.8396090205883, 1742.5075044214193],
 [3123.198831136931, 2264.480113243861],
 [3107.7485309861554, 3237.297714185986],
 [2406.515354983272, 1449.9997472213338],
 [2061.5811783094537, 1761.7304393469526],
 [2157.950726401109, 1720.287236922565],
 [2130.5642475775603, 2323.9812030845173],
 [4582.134187176585,
  939.2834759536249,
  7539.826195169142,
  7602.6511984434255,
  5819.4818190531205],
 [5335.5412834010485,
  199.90726706000075,
  6898.482387499138,
  6961.881214378749,
  5213.249612777683],
 [5361.161781154779, 4741.75049003037, 5322.98685668903, 7369.611478379137],
 [3941.4397507233684,
  5357.516497868083,
  2328.1153048984233,
  7979.288711957972],
 [916.8618575131346,
  2203.1429056833904,
  4530.040791000702,
  4886.9689262088705,
  7574.744652833618],
 [4771.737663816019, 4844.96726869873, 3166.3570883589664, 5930.786124793454],
 [7717.716273444906,
  6582.744523709673,
  3676.199853405359,
  1545.9711718705266,
  828.9932087552025,
  2059.063090593818,
  1144.6763205729608],
 [6329.731951069358,
  4144.481787204378,
  6139.161739554229,
  6185.8001120643385,
  4492.3782985909265],
 [3183.224276748094,
  2523.668024497993,
  1043.1717673125193,
  5457.748532181787,
  4585.818291830698,
  6622.334933477318,
  3762.072059061158],
 [5702.554841154955,
  4900.364199499057,
  1910.8352406431698,
  3662.4112876210806,
  2134.1721418283564,
  4431.137238897053,
  2031.2302815152693],
 [3867.93382006379, 5149.703514249099, 1889.9165981657638, 7900.441597823062],
 [6867.748338205958,
  3993.9303103952193,
  1306.6491443049576,
  1043.810147295866,
  1706.9104212172747,
  1362.4319068758573],
 [3300.5242255831135,
  3618.214703875374,
  3679.500076411549,
  1865.0320179742337],
 [1084.8665566020177, 6604.563412319174],
 [5567.960576560327, 6010.444749093036],
 [6788.510022615789,
  2992.799205119851,
  3212.464099162963,
  1385.917263343101,
  4138.1413978347855],
 [134.79782563932758, 5405.949181227128],
 [5282.683923100109, 6661.884550852192, 1972.4354594760684],
 [1988.002570139577,
  676.6844067738102,
  6100.715074712803,
  3554.6659359962346,
  7304.5809491117,
  7255.707874732448,
  5917.795772851358],
 [1514.568949499657, 2700.324938879617, 3929.867381706213, 5471.85696512273],
 [1940.6289258079053,
  2322.584347952024,
  4131.104925958496,
  5327.152800172727,
  7843.571153128636],
 [],
 [6362.499926806709,
  2584.453411152395,
  2827.408091503997,
  991.035590696825,
  3704.24786985055],
 [],
 [6058.090354248694],
 [4135.587995242409,
  2803.9336256347965,
  902.2483820688693,
  4237.86349305351,
  4082.4757964108458,
  5628.091789530394,
  2729.178646502706],
 [7345.1278897539805,
  4467.009290703674,
  1370.8312581701014,
  1230.0123464488597,
  1287.770999380813,
  1832.250362592758],
 [7871.267622202475,
  6648.5656253598645,
  3844.5466127964205,
  1014.1017923812677,
  1352.9087399204548,
  1809.2878733536093,
  1117.098885082751],
 [2598.4418889074345,
  1036.1424890816331,
  7440.239861884323,
  2175.085503460275,
  5974.288708967476,
  5845.666520900605,
  7413.171225296744,
  4527.781258294633],
 [4448.639870044663,
  3778.9880637460624,
  1085.5919169971994,
  4627.0384184381255,
  3393.5089216598167,
  5596.982768004003,
  2903.831773501332],
 [3454.8274771540314,
  1971.3951332192803,
  1528.6100860094296,
  5036.597183970159,
  4992.707609577311,
  6481.182190464335,
  3608.3722758771128],
 [4982.763995472627,
  657.1315558621454,
  7449.684366228757,
  7513.241576696674,
  5775.287006524041],
 [],
 [5563.388876527054,
  4295.096903530034,
  1641.2233048087264,
  2812.666308507214,
  2712.491980571315,
  4142.208791078794,
  1237.345814276757],
 [3179.0981183619256,
  1499.1172426727128,
  7618.031120238677,
  2562.319394162901,
  5815.9763758902245,
  5994.874124411818,
  7328.545786045648,
  4525.672759694127],
 [1884.8546048023286, 3143.853032103519, 3563.760132708898, 5887.36896110824],
 [7849.310410740582,
  4681.680319281971,
  4076.512032314603,
  3146.481527623021,
  5462.650950855577],
 [3624.9371578025457, 1113.500040203707],
 [5098.837493258585, 1423.3933640277726],
 [5021.270009432278],
 [4203.669209902274, 3931.44468379237, 4206.426945475888, 6821.384163663626],
 [6469.725361520062,
  2931.660728962052,
  2811.396107525094,
  1391.9005525973391,
  3888.7237503627016],
 [5214.548050542605,
  4490.152565815846,
  1583.4275494640278,
  4105.274698050311,
  2657.9622307999375,
  4940.851449486989,
  2423.0140331632024],
 [2300.3592633072626, 5658.7231640429245],
 [1954.055922200398, 3499.9941315746937],
 [3925.6954527559487,
  2462.2700423619467,
  1361.9418371043519,
  4546.36350654174,
  4573.293962888112,
  5998.186538775578,
  3138.975130566275],
 [3786.041247965674,
  2553.7001875307137,
  672.4524286960567,
  4577.339484503712,
  4238.324902056104,
  5920.142072728417,
  3005.3242157864943],
 [1584.9253845746243,
  1843.3625312036465,
  4591.796065522335,
  4842.753597861794,
  7370.8479917606055],
 [],
 [985.4142896242696, 1471.79562803472],
 [4552.331941569851, 750.2701934107026],
 [4480.430603427518, 680.7606114114949],
 [4340.972225446558, 648.1965391902456],
 [4322.845573991925, 600.1713454811647],
 [7809.700290081589, 4908.107139178674, 4381.443831979915, 3836.907643019564],
 [736.6582809721687,
  1511.0768394821828,
  5054.75706587856,
  4306.021528123197,
  6950.705070389794],
 [550.4955493180835,
  1640.4043254601138,
  5050.792551472159,
  4330.610666515478,
  7005.3653717137195],
 [1860.9619146683049,
  1387.119644280541,
  5212.394205982745,
  4397.553775624471,
  6812.173284010224],
 [7104.944011203514, 7295.731064617022],
 [7296.3908467942],
 [830.8237412791539],
 [3175.6197418799065,
  3128.7902418684384,
  2070.404803966938,
  6278.386864415409,
  5028.294769027065,
  7277.578204570238,
  4552.92286403391],
 [],
 [5430.615084757458, 4682.15886415485],
 [],
 [4818.334118315437, 3841.0334283215284],
 [],
 [],
 [2029.6545206154815],
 [933.4121878298433, 437.8520324610096],
 [712.8379650955865],
 [1048.4822333659367],
 [2756.876107609968, 6022.93397790245],
 [1830.6355294685347, 4168.940737302536],
 [2195.640411704413, 5238.445113832217],
 [7257.1445172585645, 2681.8274414284238, 6462.171141229237],
 [1444.3858042572883,
  306.0303782640351,
  6126.788571805071,
  3291.1241206695154,
  7311.056248698073,
  7054.171817939017,
  5829.398645399571],
 [588.412881646312,
  1241.8815318349052,
  5418.700096463283,
  3946.013145071976,
  7711.5714566645665,
  6605.870612766627],
 [1141.9223681171877,
  718.6143931415882,
  5736.374326951406,
  3648.3459187551634,
  7718.269783711162,
  7419.349863877275,
  6224.127306000045],
 [6154.482012350582,
  5061.025626658084,
  2113.827433505081,
  2566.2773261368534,
  1748.3861172518434,
  3578.3481278882837,
  867.6967896080042],
 [2059.3372554537304,
  457.86264074638063,
  6460.948945054268,
  3166.365104338089,
  6940.578982526045,
  6865.2779993846425,
  5535.879893201012],
 [],
 [1666.4847191252886,
  387.2332595183719,
  6101.950212893769,
  3396.650004784377,
  7306.284085029466,
  7139.34196331562,
  5863.890482679982],
 [],
 [6297.566884864166,
  4825.14397985221,
  2723.201717223009,
  2282.9737438661286,
  3238.711029195541,
  3852.64554012263,
  1514.8227684174947],
 [6439.724576508069,
  3288.4063352777807,
  5488.894539657343,
  5541.379951309769,
  3752.318183403865],
 [2055.085564035891,
  2340.463948229855,
  7439.829654241246,
  2612.1951140315846,
  7029.202459894676,
  6019.80844582195,
  5326.886700467814],
 [1524.235419566632, 2890.743158968573, 3944.9640605881586, 5552.052313089378],
 [712.5884550430168,
  994.4855321804116,
  5700.902864960714,
  3660.7020060509317,
  7862.343981859277,
  7428.249454173468,
  6317.394445732959],
 [397.543549612517,
  1486.8668185143201,
  5283.08306018655,
  4105.6876980422985,
  7860.230388390193,
  6790.110922360404],
 [2679.1622439660036,
  2011.7959996443808,
  1406.4521593165848,
  5830.58637370212,
  5082.476641931244,
  7055.3700723365,
  4164.764165918669],
 [3167.806091359767,
  2213.985887105952,
  875.4203890370104,
  5255.786762648452,
  4636.8931436741295,
  6518.186431761067,
  3611.9600817996175],
 [3243.4984815637263,
  2229.968970880797,
  815.3256208214566,
  5159.665970817602,
  4587.520273377595,
  6437.179378508121,
  3526.7653570617085],
 [2743.5839476070214,
  2208.1277054486372,
  1447.4766106035745,
  5878.143824461322,
  5031.4943856118,
  7062.857642832227,
  4192.385249889591],
 [2573.4583933482613,
  2280.8932703692385,
  1783.0409555745139,
  6202.515921440673,
  5266.024360394752,
  7354.06054372982,
  4504.703114830013],
 [2527.3803260279105,
  1836.6985961790608,
  7911.265763346601,
  1531.080832759361,
  5938.710300380658,
  5237.457709458029,
  7184.4359498725125,
  4285.735998844837],
 ...]
In [114]:
N_i = [[j for j in range(J) if D_ij[i][j] <= S] for i in range(I)]
In [115]:
N_i
Out[115]:
[[18],
 [],
 [],
 [15, 16],
 [],
 [],
 [0, 1, 18],
 [],
 [5, 6, 7, 26],
 [0, 1, 18],
 [0, 1, 18],
 [15, 16],
 [0, 1, 18, 27],
 [0, 1, 18, 27],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18, 27],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 17, 18, 27],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 17, 18, 27],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 17, 18, 27],
 [0, 1, 17, 18, 27],
 [0, 1, 18, 27],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [13, 15],
 [13, 15],
 [13, 15],
 [13],
 [13],
 [13],
 [13, 15],
 [13],
 [13],
 [13],
 [],
 [],
 [],
 [],
 [],
 [],
 [4, 5, 26],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [23],
 [23],
 [23],
 [23],
 [23],
 [23],
 [],
 [23],
 [],
 [],
 [],
 [25],
 [],
 [],
 [],
 [],
 [],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 21, 24],
 [8, 9, 10, 19, 24],
 [1, 17, 27],
 [1, 17, 27],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [15, 16],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19, 21, 24],
 [8, 9, 10, 19, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [],
 [],
 [4],
 [0, 1],
 [0, 1, 18],
 [0, 1],
 [0, 1],
 [0, 1],
 [0, 1, 3],
 [11],
 [2],
 [11],
 [13, 15, 16],
 [17, 27],
 [23],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [13],
 [4, 5],
 [4, 5],
 [4, 5],
 [19, 20, 21, 22, 24],
 [8, 9, 10, 19, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [8, 9, 10],
 [8, 9, 10],
 [8, 9, 10],
 [8, 9, 10],
 [8, 9, 10],
 [8, 9, 10],
 [0, 1, 18],
 [0, 1, 18],
 [15, 16],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [],
 [15, 16],
 [1, 17, 27],
 [19, 20, 21, 22, 24],
 [15, 16],
 [19, 20, 21, 22, 24],
 [18],
 [16],
 [16, 18],
 [18],
 [18],
 [18],
 [18],
 [18],
 [18],
 [18],
 [15, 16],
 [18],
 [4, 5],
 [0, 1, 18],
 [18],
 [1, 18],
 [18],
 [0, 18],
 [0, 1, 18],
 [18],
 [18],
 [4, 5],
 [0, 1, 18],
 [0, 1, 18],
 [4, 5, 6, 7, 26],
 [4],
 [4, 5, 26],
 [4, 5],
 [4, 5, 6, 7, 26],
 [4, 5],
 [4, 5, 26],
 [4],
 [4, 5],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5],
 [4, 5],
 [4, 5, 6, 7, 26],
 [15, 16],
 [15, 16],
 [20, 21, 22, 24],
 [25],
 [25],
 [25],
 [25],
 [25],
 [],
 [0, 1, 18],
 [0, 1, 18],
 [],
 [0, 1, 18],
 [0, 1, 18],
 [26],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [20, 21, 22],
 [0, 1, 18],
 [20, 21, 22, 24],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [20, 21, 22, 24],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 17, 27],
 [0, 1, 18],
 [0, 1, 17, 27],
 [0, 1, 17, 27],
 [0, 1, 17, 27],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [0, 1, 17, 27],
 [0, 1, 17, 27],
 [0, 1, 17, 27],
 [0, 1, 18],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [0, 1, 18],
 [0, 1, 17, 27],
 [0, 1, 17, 27],
 [0, 1, 18],
 [18],
 [],
 [],
 [11],
 [],
 [],
 [],
 [11],
 [23],
 [5],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [17, 27],
 [17, 27],
 [4, 5],
 [4, 5],
 [0, 1, 18],
 [0, 1, 18],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [14],
 [4, 5, 6, 7, 26],
 [15, 16],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [1, 2, 3],
 [15, 16],
 [4, 5],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [15, 16],
 [0, 1, 17, 27],
 [15, 16],
 [],
 [8, 9, 10, 19, 24],
 [],
 [0, 1, 18],
 [15, 16],
 [15, 16],
 [5, 6, 7, 26],
 [],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [8, 9, 19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [15, 16],
 [15, 16],
 [15, 16],
 [19, 20, 21, 22, 24],
 [15, 16],
 [19, 20, 21, 22, 24],
 [15, 16],
 [15, 16],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 21, 24],
 [8, 9, 10, 19, 21, 24],
 [8, 9, 10],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [25],
 [25],
 [25],
 [25],
 [25],
 [25],
 [25],
 [5, 23],
 [5],
 [5, 23],
 [23],
 [23],
 [23],
 [23],
 [23],
 [4, 5, 6, 7, 26],
 [4, 5],
 [],
 [8, 9, 10],
 [],
 [],
 [],
 [8, 9, 10],
 [],
 [19, 20, 21, 22, 24],
 [17, 27],
 [],
 [15, 16],
 [19, 20, 21, 22, 24],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [0, 1, 18],
 [15, 16],
 [0, 1, 18, 27],
 [0, 1, 18, 27],
 [0, 1, 18, 27],
 [0, 1, 18],
 [0, 1, 18, 27],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [8, 9, 10, 19],
 [0, 1, 18, 27],
 [0, 1, 18, 27],
 [0, 1, 18],
 [],
 [4, 5],
 [19, 20, 21, 22, 24],
 [15, 16],
 [0, 1, 18],
 [17, 27],
 [17, 27],
 [4, 5],
 [15, 16],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [0, 1, 17, 27],
 [0, 1, 17, 27],
 [17, 27],
 [17, 27],
 [5, 6, 7, 26],
 [15, 16],
 [1, 17, 27],
 [1, 17, 27],
 [15, 16],
 [15, 16],
 [1, 17, 27],
 [0, 1, 18],
 [8, 9, 10, 19, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [6, 7],
 [6, 7, 26],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [6, 7, 25],
 [15, 16],
 [25],
 [4, 5],
 [],
 [],
 [25],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [1, 17, 27],
 [1, 17, 27],
 [1, 17, 27],
 [1, 17, 27],
 [19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [0, 1, 18],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [13, 15, 16],
 [1, 17, 27],
 [0, 1, 17, 27],
 [18],
 [17, 27],
 [15, 16],
 [15, 16],
 [26],
 [1, 17, 27],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [0, 1, 3],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [14],
 [17, 27],
 [17, 27],
 [17, 27],
 [17, 27],
 [5, 6, 7, 26],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [5],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [13, 15, 16],
 [19, 20, 21, 22, 24],
 [8, 9, 10, 19, 21, 24],
 [19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10],
 [4, 5, 6, 7, 26],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [17, 27],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [5, 6, 7, 26],
 [15, 16],
 [15, 16],
 [0, 1, 18],
 [15, 16],
 [15, 16],
 [9, 19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [4, 5],
 [4, 5],
 [4, 5],
 [4, 5],
 [14],
 [],
 [],
 [],
 [14],
 [],
 [],
 [14],
 [],
 [],
 [14],
 [],
 [],
 [],
 [],
 [],
 [26],
 [],
 [2, 3],
 [13, 15, 16],
 [6, 7, 26],
 [2, 3],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [15, 16],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [],
 [11],
 [],
 [],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [8, 9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [15, 16],
 [16],
 [],
 [19, 20, 21, 22, 24],
 [15, 16],
 [9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [0, 18],
 [19, 20, 21, 22, 24],
 [26],
 [14],
 [14],
 [18],
 [15, 16],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [],
 [8, 9, 10, 19, 20, 21, 24],
 [],
 [8, 9, 19, 20, 21, 22, 24],
 [14],
 [1, 17, 27],
 [9, 19, 20, 21, 22, 24],
 [4],
 [1, 17, 27],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [23],
 [15, 16],
 [15, 16],
 [],
 [8, 9, 10, 19],
 [15, 16],
 [15, 16],
 [15, 16],
 [19, 20, 21, 22, 24],
 [15, 16],
 [],
 [],
 [],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [5, 6, 7, 26],
 [20, 21, 22, 24],
 [20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [17, 27],
 [20, 21, 22, 24],
 [20, 21, 22, 24],
 [20, 21, 22, 24],
 [20, 21, 22, 24],
 [5, 6, 7, 26],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [8, 9, 19, 20, 21, 22, 24],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [0, 1, 18],
 [15, 16],
 [0, 1, 17, 27],
 [0, 1, 18],
 [0, 1, 18],
 [],
 [0, 1, 18],
 [15, 16],
 [0, 1, 18],
 [18],
 [18],
 [17, 27],
 [4],
 [4, 5],
 [],
 [],
 [],
 [25],
 [25],
 [25],
 [8, 9, 19, 20, 21, 22, 24],
 [25],
 [25],
 [25],
 [25],
 [25],
 [25],
 [25],
 [15],
 [25],
 [20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [],
 [0, 1],
 [0, 1],
 [0, 1],
 [0, 1, 3],
 [19, 20, 21, 22, 24],
 [0, 1],
 [0, 1],
 [0, 1, 3],
 [0, 1, 3],
 [11],
 [11],
 [11],
 [11],
 [11],
 [11],
 [11],
 [4, 5],
 [5, 26],
 [4, 5, 26],
 [5],
 [4, 5, 23],
 [23],
 [5],
 [4, 5, 6, 7, 26],
 [5, 23],
 [4, 5],
 [4, 5],
 [4, 5],
 [5, 26],
 [5, 6, 7, 26],
 [6, 7, 25, 26],
 [5, 6, 7, 26],
 [6, 7, 26],
 [6, 7, 25, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [14],
 [4, 5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [6, 7, 26],
 [5, 6, 7, 26],
 [6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [5, 6, 7, 26],
 [5, 6, 7, 26],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [4, 5, 6, 7, 26],
 [4, 5, 6, 7, 26],
 [8, 9, 10, 19],
 [8, 9, 10, 19],
 [8, 9, 10, 19, 24],
 [20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [4, 5, 6, 7, 26],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19],
 [9, 19, 20, 21, 22, 24],
 [5, 6, 7, 26],
 [4, 5],
 [17, 27],
 [19, 20, 21, 22, 24],
 [4, 5],
 [8, 9, 10],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19],
 [8, 9, 10, 19, 24],
 [],
 [19, 20, 21, 22, 24],
 [],
 [13],
 [8, 9, 19, 20, 21, 22, 24],
 [9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [4, 5, 6, 7, 26],
 [],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 [8, 9, 10, 19],
 [19, 20, 21, 22, 24],
 [15, 16],
 [15, 16],
 [16],
 [8, 9, 10, 19],
 [19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [15, 16],
 [15, 16],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 24],
 [],
 [17, 27],
 [15, 16],
 [15, 16],
 [15, 16],
 [15, 16],
 [0, 1, 17, 27],
 [8, 9, 10, 19, 24],
 [8, 9, 10, 19, 24],
 [8, 9, 10, 19, 24],
 [15, 16],
 [18],
 [14],
 [8, 9, 19, 20, 21, 22, 24],
 [],
 [15, 16],
 [],
 [15, 16],
 [],
 [],
 [14],
 [17, 27],
 [14],
 [14],
 [15, 16],
 [15, 16],
 [15, 16],
 [13, 15, 16],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19, 21, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 24],
 [],
 [8, 9, 10, 19, 20, 21, 24],
 [],
 [8, 9, 19, 20, 21, 22, 24],
 [4, 5, 6, 7, 26],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19],
 [8, 9, 10, 19, 20, 21, 24],
 [8, 9, 10, 19, 21, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 19, 20, 21, 22, 24],
 [8, 9, 10, 19, 20, 21, 22, 24],
 ...]

Question 4: Complete the Optimization Model ( 6 pts )¶

In [116]:
import gurobipy as gp
from gurobipy import GRB

# Create a new Gurobi model
mclp = gp.Model("Maximal_Covering_Location")

# Decision Variables
x =  mclp.addVars(J, vtype=GRB.BINARY, name="x") # Facility is open or not
y =  mclp.addVars(I, vtype=GRB.BINARY, name="y") # Demand is covered or not

# Objective Function
mclp.setObjective(gp.quicksum(a_i[i] * y[i] for i in range(I)), sense=GRB.MAXIMIZE)

# Constraints
# Each demand must be covered by neighboring facility
#mclp.addConstrs(gp.quicksum(x[j] for j in range(len(N_i[i]))) >= y[i] for i in range(I))
mclp.addConstrs((gp.quicksum(x[j] for j in N_i[i]) >= y[i] for i in range(I)), name="coverage")


# Number of opened facilities must not exceed P
mclp.addConstr(gp.quicksum(x[j] for j in range(J)) == P)


# Optimize the model
mclp.optimize()
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xb7b543bc
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157029.00000

Root relaxation: objective 1.668990e+05, 17 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    166899.00000 166899.000  0.00%     -    0s

Explored 1 nodes (17 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 166899 157029 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.668990000000e+05, best bound 1.668990000000e+05, gap 0.0000%

Question 5: Take a subset of stations based on the model output. ( 1 pt )¶

In [117]:
open_stations = stations
open_stations['selected'] = [x[j].x > 0.5 for j in range(len(stations))]
open_stations = open_stations[open_stations["selected"] == True]
In [118]:
len(open_stations)
Out[118]:
10

Question 6: Plot the open_stations and their coverage buffers with the demand buffers. ( 2 pts )¶

  • Copy and Paste the plotting code from Question 2.
  • Replace stations with open_stations.
  • Add another plot function which plots the buffer with buffer distance S from each open_station.
    • The coverage buffer shouldn't have facecolor
    • Buffer Boundary must be dashed lines. (ask chatGPT of google how to do this!)
In [119]:
FIGSIZE = (10, 10)

ax = blocks.plot(column='Population', 
            cmap='viridis', 
            legend=True, 
            markersize=blocks['Population']*0.1, 
            alpha=0.4,
            figsize = FIGSIZE)
open_stations['geometry'].buffer(S).plot(ax=ax, edgecolor='red', linestyle='--', linewidth=1, alpha=0.5, facecolor='none')
open_stations.plot(ax=ax, color='red', marker='o', markersize=8)

plt.title("Blocks Population with Fire Stations, 8000m Buffer")
Out[119]:
Text(0.5, 1.0, 'Blocks Population with Fire Stations, 8000m Buffer')

Step 3. Functionize / Modularize¶

Here, we will functionize our optimization model.
Sothat with given P value, the model can be solved.

Question 7: Functionize your code out of Question 4 and 5 ( 2 pts )¶

  • start defining a function named, "solve_mclp". ( 0.5 pts )
  • The function takes one argument, P. ( 0.5 pts )
  • Within the function, copy and paste the code you did for Question 4 and 5. ( 0.5 pts )
  • Then, add the last line of code, to return open_stations, and mclp.obj_val ( 0.5 pts )
In [120]:
# Let me give you functionize example.
# For more, refer to Lab 0.

sample_list = [1,2,3,4]

def sum_array(a):
    s = 0
    a = np.array(a)
    for num in a:
        s += num
    return s, a # Return the summation of all elements, and the original array

sum_array(sample_list)
Out[120]:
(10, array([1, 2, 3, 4]))
In [121]:
## PUT YOUR FUNCTION HERE!!!##

def solve_mclp(P):
    # Create a new Gurobi model
    mclp = gp.Model("Maximal_Covering_Location")

    # Decision Variables
    x =  mclp.addVars(J, vtype=GRB.BINARY, name="x") # Facility is open or not
    y =  mclp.addVars(I, vtype=GRB.BINARY, name="y") # Demand is covered or not

    # Objective Function
    mclp.setObjective(gp.quicksum(a_i[i] * y[i] for i in range(I)), sense=GRB.MAXIMIZE)

    # Constraints
    # Each demand must be covered by neighboring facility
    mclp.addConstrs((gp.quicksum(x[j] for j in N_i[i]) >= y[i] for i in range(I)), name="coverage")

    # Number of opened facilities must not exceed P
    mclp.addConstr(gp.quicksum(x[j] for j in range(J)) == P)

    # Optimize the model
    mclp.optimize()
    
    # Capture results
    open_stations = stations
    open_stations['selected'] = [x[j].x > 0.5 for j in range(len(stations))]
    open_stations = open_stations[open_stations["selected"] == True]
    
    return open_stations, mclp.obj_val
In [122]:
mclp_22, mclp_22_obj = solve_mclp(P)
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xb7b543bc
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157029.00000

Root relaxation: objective 1.668990e+05, 17 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    166899.00000 166899.000  0.00%     -    0s

Explored 1 nodes (17 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 166899 157029 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.668990000000e+05, best bound 1.668990000000e+05, gap 0.0000%

Step 4. Evaluate the Result¶

Question 8: To evaluate the optimization result, we always compare with the current operation. Calculate current_coverage. ( 2 pts )¶

Current coverage is the sum of all the demand weights, currently covered by existing stations.
Here are the thought process you can go through.

  • Create buffers with distance S out of all the existing stations.
  • Take a unary_union of the buffers. ( 0.5 pts )
  • Use .within() function to take a subset of blocks, within the unary_union of coverage buffers. ( 0.5 pts )
  • Take the Population column out of the subset of blocks. ( 0.5 pts )
  • Take the sum of the column values. ( 0.5 pts )
In [123]:
buffers = stations['geometry'].buffer(S) #Create buffers around each existing station with distance S

combined_coverage_area = buffers.unary_union #Take a unary_union of these buffers to create a single combined coverage area

covered_blocks = blocks[blocks['geometry'].within(combined_coverage_area)] #Use .within() method to find which blocks' centroids are within the combined coverage area

covered_population = covered_blocks['Population'] #Extract the Population column from these covered blocks

current_coverage = covered_population.sum() #Sum the values of the Population column to get the current coverage

current_coverage
Out[123]:
167606

Task: Check if provided code works with your defined function, solve_mclp¶

In [124]:
selecteds = []  # List to store selected stations for each value of p
obj_vals = []   # List to store objective values for each value of p

# Iterate over values of p starting from 3
for p in range(3, len(stations)+1):
    print(f"=================== for P={p}")  # Print current value of p
    # Call solve_mclp function to solve the problem for current value of p
    selected_stations, obj_val = solve_mclp(p)
    # Append selected stations to the selecteds list
    selecteds.append(selected_stations)
    # Append objective value to the obj_vals list
    obj_vals.append(obj_val)
=================== for P=3
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xc0ad17f5
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+00, 3e+00]
Found heuristic solution: objective 92175.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 94338.000000

Root relaxation: objective 1.420460e+05, 35 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    142046.00000 142046.000  0.00%     -    0s

Explored 1 nodes (35 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 142046 94338 92175 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.420460000000e+05, best bound 1.420460000000e+05, gap 0.0000%
=================== for P=4
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xfadfb59a
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [4e+00, 4e+00]
Found heuristic solution: objective 92175.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 129494.00000

Root relaxation: objective 1.535990e+05, 34 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    153599.00000 153599.000  0.00%     -    0s

Explored 1 nodes (34 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 153599 129494 92175 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.535990000000e+05, best bound 1.535990000000e+05, gap 0.0000%
=================== for P=5
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2d7d1191
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [5e+00, 5e+00]
Found heuristic solution: objective 93253.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 130060.00000

Root relaxation: objective 1.578710e+05, 31 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    157871.00000 157871.000  0.00%     -    0s

Explored 1 nodes (31 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 157871 130060 93253 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.578710000000e+05, best bound 1.578710000000e+05, gap 0.0000%
=================== for P=6
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x93808d8a
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [6e+00, 6e+00]
Found heuristic solution: objective 93491.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 130298.00000

Root relaxation: objective 1.615640e+05, 28 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    161564.00000 161564.000  0.00%     -    0s

Explored 1 nodes (28 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 161564 130298 93491 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.615640000000e+05, best bound 1.615640000000e+05, gap 0.0000%
=================== for P=7
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x97fb479c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [7e+00, 7e+00]
Found heuristic solution: objective 93491.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 145323.00000

Root relaxation: objective 1.636980e+05, 24 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    163698.00000 163698.000  0.00%     -    0s

Explored 1 nodes (24 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 163698 145323 93491 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.636980000000e+05, best bound 1.636980000000e+05, gap 0.0000%
=================== for P=8
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x847bf175
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [8e+00, 8e+00]
Found heuristic solution: objective 108080.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 145563.00000

Root relaxation: objective 1.656950e+05, 23 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    165695.00000 165695.000  0.00%     -    0s

Explored 1 nodes (23 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 165695 145563 108080 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.656950000000e+05, best bound 1.656950000000e+05, gap 0.0000%
=================== for P=9
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2f5f0b47
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [9e+00, 9e+00]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 156939.00000

Root relaxation: objective 1.663330e+05, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    166333.00000 166333.000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 166333 156939 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.663330000000e+05, best bound 1.663330000000e+05, gap 0.0000%
=================== for P=10
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xb7b543bc
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157029.00000

Root relaxation: objective 1.668990e+05, 17 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    166899.00000 166899.000  0.00%     -    0s

Explored 1 nodes (17 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 166899 157029 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.668990000000e+05, best bound 1.668990000000e+05, gap 0.0000%
=================== for P=11
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xd91a1015
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157061.00000

Root relaxation: objective 1.671390e+05, 17 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167139.00000 167139.000  0.00%     -    0s

Explored 1 nodes (17 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167139 157061 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.671390000000e+05, best bound 1.671390000000e+05, gap 0.0000%
=================== for P=12
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x9c26a3d2
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119658.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157090.00000

Root relaxation: objective 1.673330e+05, 10 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167333.00000 167333.000  0.00%     -    0s

Explored 1 nodes (10 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167333 157090 119658 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.673330000000e+05, best bound 1.673330000000e+05, gap 0.0000%
=================== for P=13
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xbe7d7781
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 125468.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 162535.00000

Root relaxation: objective 1.674520e+05, 9 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167452.00000 167452.000  0.00%     -    0s

Explored 1 nodes (9 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167452 162535 125468 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.674520000000e+05, best bound 1.674520000000e+05, gap 0.0000%
=================== for P=14
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x8640ba42
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 126106.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 162535.00000

Root relaxation: objective 1.675220e+05, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167522.00000 167522.000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167522 162535 126106 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.675220000000e+05, best bound 1.675220000000e+05, gap 0.0000%
=================== for P=15
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2b8808f0
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128228.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 163173.00000

Root relaxation: objective 1.675910e+05, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167591.00000 167591.000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167591 163173 128228 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.675910000000e+05, best bound 1.675910000000e+05, gap 0.0000%
=================== for P=16
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x52777deb
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128336.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 163173.00000

Root relaxation: objective 1.676050e+05, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167605.00000 167605.000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167605 163173 128336 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676050000000e+05, best bound 1.676050000000e+05, gap 0.0000%
=================== for P=17
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2ad6c71c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128365.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 166866.00000

Root relaxation: objective 1.676060e+05, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 166866 128365 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=18
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x24780f1e
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128365.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 166866.00000

Root relaxation: objective 1.676060e+05, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 166866 128365 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=19
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x6ba4be92
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128687.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 167389.00000

Root relaxation: objective 1.676060e+05, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167389 128687 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=20
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x07c324de
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128757.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 167403.00000

Root relaxation: objective 1.676060e+05, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167403 128757 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=21
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xda311daa
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128757.00000
Presolve removed 3188 rows and 3189 columns
Presolve time: 0.00s
Presolved: 37 rows, 63 columns, 186 nonzeros
Variable types: 0 continuous, 63 integer (62 binary)
Found heuristic solution: objective 167120.00000

Root relaxation: objective 1.676060e+05, 9 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (9 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167120 128757 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=22
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x08bd13bd
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132450.00000
Presolve removed 3190 rows and 3192 columns
Presolve time: 0.00s
Presolved: 35 rows, 60 columns, 164 nonzeros
Variable types: 0 continuous, 60 integer (58 binary)
Found heuristic solution: objective 167472.00000

Root relaxation: objective 1.676060e+05, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167472 132450 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=23
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x5da6375d
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132450.00000
Presolve removed 3193 rows and 3197 columns
Presolve time: 0.00s
Presolved: 32 rows, 55 columns, 138 nonzeros
Variable types: 0 continuous, 55 integer (52 binary)
Found heuristic solution: objective 167605.00000

Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 167605 132450 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676050000000e+05, best bound 1.676060000000e+05, gap 0.0006%
=================== for P=24
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xf70d4620
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132451.00000
Presolve removed 3197 rows and 3202 columns
Presolve time: 0.00s
Presolved: 28 rows, 50 columns, 116 nonzeros
Variable types: 0 continuous, 50 integer (47 binary)
Found heuristic solution: objective 167606.00000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 167606 132451 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=25
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x3efafc60
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132936.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 167606 132936 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=26
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x6b6ea36d
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 165585.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 167606 165585 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=27
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xd2d84d3c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 165585.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 167606 165585 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=28
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xe3ad4a80
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 167606.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 1: 167606 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%

Task: Check if the output Table is plausible. And learn how to create a pandas DataFrame¶

  • To create a DataFrame, you can call pandas.DataFrame() and deliver a dictionary.
  • The dictionary will have key and value pairs.
    • key will be the column name
    • value will be an array of column values
In [125]:
results = pd.DataFrame({
    'P': range(3, len(stations)+1),
    'Coverage': obj_vals
})
results
Out[125]:
P Coverage
0 3 142046.0
1 4 153599.0
2 5 157871.0
3 6 161564.0
4 7 163698.0
5 8 165695.0
6 9 166333.0
7 10 166899.0
8 11 167139.0
9 12 167333.0
10 13 167452.0
11 14 167522.0
12 15 167591.0
13 16 167605.0
14 17 167606.0
15 18 167606.0
16 19 167606.0
17 20 167606.0
18 21 167606.0
19 22 167606.0
20 23 167605.0
21 24 167606.0
22 25 167606.0
23 26 167606.0
24 27 167606.0
25 28 167606.0
In [126]:
def scatterplot_result(results):
    # Plot the DataFrame, in scatter plot, taking P values as x and Coverage values as y
    results.plot(kind="scatter", x="P", y="Coverage")
    # Add grid lines
    plt.grid(True)
    # Add the current coverage point in color red
    plt.scatter(len(stations), current_coverage, color="red")
    # provide a dashed red line to inform current coverage
    plt.axhline(y=current_coverage, color='r', linestyle='--', label='Current Coverage')
    # show the plot!
    plt.show()
    
scatterplot_result(results)
/opt/anaconda3/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1114: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
  scatter = ax.scatter(

Task: Put your code to plot open_stations and coverage buffer from Question 6.¶

Feel free to edit any other plotting details

In [141]:
def map_result(p, demand_block=True):
    open_stations = selecteds[p-3]
    ## PUT YOUR ANSWER HERE ##
    
    FIGSIZE = (10, 10)

    ax = blocks.plot(column='Population', 
                cmap='viridis', 
                legend=True, 
                markersize=blocks['Population']*0.1, 
                alpha=0.4,
                figsize = FIGSIZE)

    plt.title("Blocks Population with Fire Stations, 8000m Buffer")

    if demand_block:
        blocks.plot("Population", ax=ax, markersize=5)
    else:
        fishnet_points.plot(ax=ax)
    open_stations['geometry'].buffer(S).plot(ax=ax, edgecolor='red', linestyle='--', linewidth=1, alpha=0.5, facecolor='none')
    open_stations.plot(ax=ax, color='red', marker='o', markersize=8)
    plt.title(f"{p} stations open")
    plt.show()
    
map_result(10) # Try different p!

Task: Following function is to go through the whole process. Check if you get the same output as before :)¶

In [142]:
def optimize_and_evaluate(demand_block=True):
    selecteds = [] 
    obj_vals = [] 
    for p in range(3, len(stations)+1):
        print(f"=================== for P={p}")
        selected_stations, obj_val = solve_mclp(p)
        selecteds.append(selected_stations)
        obj_vals.append(obj_val)
        map_result(p, demand_block)
        
    results = pd.DataFrame({
        'P': range(3, len(stations)+1),
        'Coverage': obj_vals
    })
    scatterplot_result(results)
In [131]:
optimize_and_evaluate()
=================== for P=3
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xc0ad17f5
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+00, 3e+00]
Found heuristic solution: objective 92175.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 94338.000000

Root relaxation: objective 1.420460e+05, 35 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    142046.00000 142046.000  0.00%     -    0s

Explored 1 nodes (35 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 142046 94338 92175 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.420460000000e+05, best bound 1.420460000000e+05, gap 0.0000%
=================== for P=4
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xfadfb59a
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [4e+00, 4e+00]
Found heuristic solution: objective 92175.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 129494.00000

Root relaxation: objective 1.535990e+05, 34 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    153599.00000 153599.000  0.00%     -    0s

Explored 1 nodes (34 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 153599 129494 92175 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.535990000000e+05, best bound 1.535990000000e+05, gap 0.0000%
=================== for P=5
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2d7d1191
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [5e+00, 5e+00]
Found heuristic solution: objective 93253.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 130060.00000

Root relaxation: objective 1.578710e+05, 31 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    157871.00000 157871.000  0.00%     -    0s

Explored 1 nodes (31 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 157871 130060 93253 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.578710000000e+05, best bound 1.578710000000e+05, gap 0.0000%
=================== for P=6
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x93808d8a
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [6e+00, 6e+00]
Found heuristic solution: objective 93491.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 130298.00000

Root relaxation: objective 1.615640e+05, 28 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    161564.00000 161564.000  0.00%     -    0s

Explored 1 nodes (28 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 161564 130298 93491 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.615640000000e+05, best bound 1.615640000000e+05, gap 0.0000%
=================== for P=7
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x97fb479c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [7e+00, 7e+00]
Found heuristic solution: objective 93491.000000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 145323.00000

Root relaxation: objective 1.636980e+05, 24 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    163698.00000 163698.000  0.00%     -    0s

Explored 1 nodes (24 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 163698 145323 93491 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.636980000000e+05, best bound 1.636980000000e+05, gap 0.0000%
=================== for P=8
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x847bf175
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [8e+00, 8e+00]
Found heuristic solution: objective 108080.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 145563.00000

Root relaxation: objective 1.656950e+05, 23 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    165695.00000 165695.000  0.00%     -    0s

Explored 1 nodes (23 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 165695 145563 108080 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.656950000000e+05, best bound 1.656950000000e+05, gap 0.0000%
=================== for P=9
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2f5f0b47
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [9e+00, 9e+00]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 156939.00000

Root relaxation: objective 1.663330e+05, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    166333.00000 166333.000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 166333 156939 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.663330000000e+05, best bound 1.663330000000e+05, gap 0.0000%
=================== for P=10
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xb7b543bc
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157029.00000

Root relaxation: objective 1.668990e+05, 17 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    166899.00000 166899.000  0.00%     -    0s

Explored 1 nodes (17 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 166899 157029 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.668990000000e+05, best bound 1.668990000000e+05, gap 0.0000%
=================== for P=11
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xd91a1015
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119589.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157061.00000

Root relaxation: objective 1.671390e+05, 17 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167139.00000 167139.000  0.00%     -    0s

Explored 1 nodes (17 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167139 157061 119589 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.671390000000e+05, best bound 1.671390000000e+05, gap 0.0000%
=================== for P=12
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x9c26a3d2
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 119658.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 157090.00000

Root relaxation: objective 1.673330e+05, 10 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167333.00000 167333.000  0.00%     -    0s

Explored 1 nodes (10 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167333 157090 119658 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.673330000000e+05, best bound 1.673330000000e+05, gap 0.0000%
=================== for P=13
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xbe7d7781
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 125468.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 162535.00000

Root relaxation: objective 1.674520e+05, 9 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167452.00000 167452.000  0.00%     -    0s

Explored 1 nodes (9 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167452 162535 125468 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.674520000000e+05, best bound 1.674520000000e+05, gap 0.0000%
=================== for P=14
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x8640ba42
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 126106.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 162535.00000

Root relaxation: objective 1.675220e+05, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167522.00000 167522.000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167522 162535 126106 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.675220000000e+05, best bound 1.675220000000e+05, gap 0.0000%
=================== for P=15
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2b8808f0
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128228.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 163173.00000

Root relaxation: objective 1.675910e+05, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167591.00000 167591.000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167591 163173 128228 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.675910000000e+05, best bound 1.675910000000e+05, gap 0.0000%
=================== for P=16
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x52777deb
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128336.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 163173.00000

Root relaxation: objective 1.676050e+05, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167605.00000 167605.000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167605 163173 128336 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676050000000e+05, best bound 1.676050000000e+05, gap 0.0000%
=================== for P=17
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x2ad6c71c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128365.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 166866.00000

Root relaxation: objective 1.676060e+05, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 166866 128365 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=18
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x24780f1e
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128365.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 166866.00000

Root relaxation: objective 1.676060e+05, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 166866 128365 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=19
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x6ba4be92
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128687.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 167389.00000

Root relaxation: objective 1.676060e+05, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167389 128687 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=20
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x07c324de
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128757.00000
Presolve removed 3187 rows and 3188 columns
Presolve time: 0.00s
Presolved: 38 rows, 64 columns, 195 nonzeros
Variable types: 0 continuous, 64 integer (63 binary)
Found heuristic solution: objective 167403.00000

Root relaxation: objective 1.676060e+05, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167403 128757 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=21
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xda311daa
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 128757.00000
Presolve removed 3188 rows and 3189 columns
Presolve time: 0.00s
Presolved: 37 rows, 63 columns, 186 nonzeros
Variable types: 0 continuous, 63 integer (62 binary)
Found heuristic solution: objective 167120.00000

Root relaxation: objective 1.676060e+05, 9 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (9 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167120 128757 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=22
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x08bd13bd
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132450.00000
Presolve removed 3190 rows and 3192 columns
Presolve time: 0.00s
Presolved: 35 rows, 60 columns, 164 nonzeros
Variable types: 0 continuous, 60 integer (58 binary)
Found heuristic solution: objective 167472.00000

Root relaxation: objective 1.676060e+05, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    167606.00000 167606.000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 167606 167472 132450 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=23
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x5da6375d
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132450.00000
Presolve removed 3193 rows and 3197 columns
Presolve time: 0.00s
Presolved: 32 rows, 55 columns, 138 nonzeros
Variable types: 0 continuous, 55 integer (52 binary)
Found heuristic solution: objective 167605.00000

Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 167605 132450 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676050000000e+05, best bound 1.676060000000e+05, gap 0.0006%
=================== for P=24
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xf70d4620
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132451.00000
Presolve removed 3197 rows and 3202 columns
Presolve time: 0.00s
Presolved: 28 rows, 50 columns, 116 nonzeros
Variable types: 0 continuous, 50 integer (47 binary)
Found heuristic solution: objective 167606.00000

Explored 0 nodes (0 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 167606 132451 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=25
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x3efafc60
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 132936.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 167606 132936 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=26
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0x6b6ea36d
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 165585.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 167606 165585 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=27
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xd2d84d3c
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 165585.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 167606 165585 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
=================== for P=28
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3225 rows, 3252 columns and 13191 nonzeros
Model fingerprint: 0xe3ad4a80
Variable types: 0 continuous, 3252 integer (3252 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 3e+03]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 167606.00000
Presolve removed 3225 rows and 3252 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 1: 167606 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.676060000000e+05, best bound 1.676060000000e+05, gap 0.0000%
/opt/anaconda3/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1114: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
  scatter = ax.scatter(

Step 4. Replicate your Analysis with different Demand Representations¶

Task: Review from Lab 2. We are creating fishnet points within the SBC_FD¶

In [132]:
boundary = SBC_FD.envelope # .envelope gives you the bounding rectangle of given GeoDataFrame.
boundary.bounds
Out[132]:
minx miny maxx maxy
0 -61331.613 -401270.1778 50847.5684 -323367.7559
In [133]:
minx, miny, maxx, maxy = boundary.loc[0].bounds
print(minx, miny, maxx, maxy)
-61331.61300000176 -401270.1777999997 50847.56839999929 -323367.7559000002
In [134]:
from shapely.geometry import Point

# Here, we are going to create fishnet points.
    # Fishnet points are points spaced with an equal interval.
    # You'll see when you see the output!

# Define the interval between points 
#### Note: Adjust interval value as needed for lab question 2
def create_fishnet(interval):
# Create arrays of x and y coordinates using np.arange
    x_coords = np.arange(minx, maxx, interval)
    y_coords = np.arange(miny, maxy, interval)

    # Create a list to store the points
    fishnet_points = []

    # Generate points for the fishnet
    for y in y_coords:
        for x in x_coords:
            fishnet_points.append((x, y))

    # Print the number of points generated
    print("Number of points in the fishnet:", len(fishnet_points))

    fishnet_points = gpd.GeoSeries([Point(pt_cd) for pt_cd in fishnet_points])
    fishnet_points = fishnet_points[fishnet_points.within(SBC_FD.geometry[0])]
    fishnet_points.plot(figsize=(15,5))
    return fishnet_points
In [149]:
interval = 5280/5  # default: 5280/5 feet (1 mile / 5 = 0.2 mile) 
fishnet_points = create_fishnet(interval)
Number of points in the fishnet: 7918
In [150]:
# Current Coverage
current_coverage = fishnet_points.within(stations.buffer(S).unary_union).sum()

Question 9: Re-compute the model variables here for fishnet_points, instead of blocks. ( 1 pt )¶

Note: all the fishnet points will have the same weight, 1.

In [151]:
I = len(fishnet_points)
J = len(stations)

a_i = a_i = [1] * I

D_ij = np.array([[np.sqrt((fishnet_points.geometry.iloc[i].x - stations.geometry.iloc[j].x)**2 + 
                 (fishnet_points.geometry.iloc[i].y - stations.geometry.iloc[j].y)**2) 
         for j in range(J)] for i in range(I)])

N_i = [[j for j in range(J) if D_ij[i][j] <= S] for i in range(I)]
In [152]:
optimize_and_evaluate(demand_block=False)
=================== for P=3
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xe9047901
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+00, 3e+00]
Found heuristic solution: objective 103.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 289.0000000

Root relaxation: objective 5.400000e+02, 54 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0     540.0000000  540.00000  0.00%     -    0s

Explored 1 nodes (54 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 540 289 103 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.400000000000e+02, best bound 5.400000000000e+02, gap 0.0000%
=================== for P=4
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x5c151c55
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [4e+00, 4e+00]
Found heuristic solution: objective 103.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 446.0000000

Root relaxation: objective 7.040000e+02, 55 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0     704.0000000  704.00000  0.00%     -    0s

Explored 1 nodes (55 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 704 446 103 

Optimal solution found (tolerance 1.00e-04)
Best objective 7.040000000000e+02, best bound 7.040000000000e+02, gap 0.0000%
=================== for P=5
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x30b1d761
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [5e+00, 5e+00]
Found heuristic solution: objective 272.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 564.0000000

Root relaxation: objective 8.550000e+02, 56 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0     855.0000000  855.00000  0.00%     -    0s

Explored 1 nodes (56 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 855 564 272 

Optimal solution found (tolerance 1.00e-04)
Best objective 8.550000000000e+02, best bound 8.550000000000e+02, gap 0.0000%
=================== for P=6
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x4d618f48
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [6e+00, 6e+00]
Found heuristic solution: objective 433.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 725.0000000

Root relaxation: objective 1.005000e+03, 45 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1005.0000000 1005.00000  0.00%     -    0s

Explored 1 nodes (45 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1005 725 433 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.005000000000e+03, best bound 1.005000000000e+03, gap 0.0000%
=================== for P=7
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x86f835a6
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [7e+00, 7e+00]
Found heuristic solution: objective 450.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 891.0000000

Root relaxation: objective 1.146000e+03, 40 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1146.0000000 1146.00000  0.00%     -    0s

Explored 1 nodes (40 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1146 891 450 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.146000000000e+03, best bound 1.146000000000e+03, gap 0.0000%
=================== for P=8
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd0acb5e1
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [8e+00, 8e+00]
Found heuristic solution: objective 631.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1045.0000000

Root relaxation: objective 1.270000e+03, 40 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1270.0000000 1270.00000  0.00%     -    0s

Explored 1 nodes (40 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1270 1045 631 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.270000000000e+03, best bound 1.270000000000e+03, gap 0.0000%
=================== for P=9
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xfab77a07
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [9e+00, 9e+00]
Found heuristic solution: objective 780.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1143.0000000

Root relaxation: objective 1.384000e+03, 34 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1384.0000000 1384.00000  0.00%     -    0s

Explored 1 nodes (34 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1384 1143 780 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.384000000000e+03, best bound 1.384000000000e+03, gap 0.0000%
=================== for P=10
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x7479a8cc
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 780.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1227.0000000

Root relaxation: objective 1.475000e+03, 35 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1475.0000000 1475.00000  0.00%     -    0s

Explored 1 nodes (35 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1475 1227 780 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.475000000000e+03, best bound 1.475000000000e+03, gap 0.0000%
=================== for P=11
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x8bfbba92
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 790.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1293.0000000

Root relaxation: objective 1.564000e+03, 32 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1564.0000000 1564.00000  0.00%     -    0s

Explored 1 nodes (32 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1564 1293 790 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.564000000000e+03, best bound 1.564000000000e+03, gap 0.0000%
=================== for P=12
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xf70b3ac7
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 858.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1407.0000000

Root relaxation: objective 1.647000e+03, 32 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1647.0000000 1647.00000  0.00%     -    0s

Explored 1 nodes (32 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1647 1407 858 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.647000000000e+03, best bound 1.647000000000e+03, gap 0.0000%
=================== for P=13
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xe1965031
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 945.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1376.0000000

Root relaxation: objective 1.715000e+03, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1715.0000000 1715.00000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1715 1376 945 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.715000000000e+03, best bound 1.715000000000e+03, gap 0.0000%
=================== for P=14
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x71c262ee
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 1059.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1490.0000000

Root relaxation: objective 1.743000e+03, 22 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1743.0000000 1743.00000  0.00%     -    0s

Explored 1 nodes (22 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1743 1490 1059 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.743000000000e+03, best bound 1.743000000000e+03, gap 0.0000%
=================== for P=15
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x0af939ff
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1230.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1499.0000000

Root relaxation: objective 1.763000e+03, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1763.0000000 1763.00000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1763 1499 1230 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.763000000000e+03, best bound 1.763000000000e+03, gap 0.0000%
=================== for P=16
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x0b49ef42
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1310.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1567.0000000

Root relaxation: objective 1.780000e+03, 16 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1780.0000000 1780.00000  0.00%     -    0s

Explored 1 nodes (16 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1780 1567 1310 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.780000000000e+03, best bound 1.780000000000e+03, gap 0.0000%
=================== for P=17
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x526d2816
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1313.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1571.0000000

Root relaxation: objective 1.789000e+03, 11 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1789.0000000 1789.00000  0.00%     -    0s

Explored 1 nodes (11 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1789 1571 1313 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.789000000000e+03, best bound 1.789000000000e+03, gap 0.0000%
=================== for P=18
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x03da43ef
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1313.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1571.0000000

Root relaxation: objective 1.793000e+03, 9 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1793.0000000 1793.00000  0.00%     -    0s

Explored 1 nodes (9 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1793 1571 1313 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.793000000000e+03, best bound 1.793000000000e+03, gap 0.0000%
=================== for P=19
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xc8613c39
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1317.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1573.0000000

Root relaxation: objective 1.797000e+03, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1573 1317 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=20
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd2fb92d6
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1408.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1641.0000000

Root relaxation: objective 1.797000e+03, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1641 1408 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=21
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xefd84af8
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1408.0000000
Presolve removed 3255 rows and 3255 columns
Presolve time: 0.00s
Presolved: 50 rows, 77 columns, 244 nonzeros
Variable types: 0 continuous, 77 integer (77 binary)
Found heuristic solution: objective 1772.0000000

Root relaxation: objective 1.797000e+03, 6 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (6 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1772 1408 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=22
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xefb7c4b9
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1563.0000000
Presolve removed 3257 rows and 3257 columns
Presolve time: 0.00s
Presolved: 48 rows, 75 columns, 228 nonzeros
Variable types: 0 continuous, 75 integer (75 binary)
Found heuristic solution: objective 1792.0000000

Root relaxation: objective 1.797000e+03, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1792 1563 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=23
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x7e54be92
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1563.0000000
Presolve removed 3261 rows and 3263 columns
Presolve time: 0.00s
Presolved: 44 rows, 69 columns, 192 nonzeros
Variable types: 0 continuous, 69 integer (68 binary)
Found heuristic solution: objective 1784.0000000

Root relaxation: objective 1.797000e+03, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1784 1563 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=24
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x473ac067
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1571.0000000
Presolve removed 3265 rows and 3267 columns
Presolve time: 0.00s
Presolved: 40 rows, 65 columns, 170 nonzeros
Variable types: 0 continuous, 65 integer (64 binary)
Found heuristic solution: objective 1797.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 1797 1571 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=25
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd00fda1f
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1646.0000000
Presolve removed 3275 rows and 3281 columns
Presolve time: 0.00s
Presolved: 30 rows, 51 columns, 117 nonzeros
Variable types: 0 continuous, 51 integer (48 binary)
Found heuristic solution: objective 1797.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 1797 1646 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=26
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x83d3e292
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 1762.0000000
Presolve removed 3305 rows and 3332 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 1797 1762 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=27
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x1af93551
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 1762.0000000
Presolve removed 3305 rows and 3332 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 1797 1762 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=28
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xaa492b11
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 1797.0000000
Presolve removed 3305 rows and 3332 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 1: 1797 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
/opt/anaconda3/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1114: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
  scatter = ax.scatter(
In [154]:
selecteds = []  # List to store selected stations for each value of p
obj_vals = []   # List to store objective values for each value of p

# Iterate over values of p starting from 3
for p in range(3, len(stations)+1):
    print(f"=================== for P={p}")  # Print current value of p
    # Call solve_mclp function to solve the problem for current value of p
    selected_stations, obj_val = solve_mclp(p)
    # Append selected stations to the selecteds list
    selecteds.append(selected_stations)
    # Append objective value to the obj_vals list
    obj_vals.append(obj_val)
    
results = pd.DataFrame({
    'P': range(3, len(stations)+1),
    'Coverage': obj_vals
})

scatterplot_result(results)
=================== for P=3
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xe9047901
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+00, 3e+00]
Found heuristic solution: objective 103.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 289.0000000

Root relaxation: objective 5.400000e+02, 54 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0     540.0000000  540.00000  0.00%     -    0s

Explored 1 nodes (54 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 540 289 103 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.400000000000e+02, best bound 5.400000000000e+02, gap 0.0000%
=================== for P=4
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x5c151c55
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [4e+00, 4e+00]
Found heuristic solution: objective 103.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 446.0000000

Root relaxation: objective 7.040000e+02, 55 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0     704.0000000  704.00000  0.00%     -    0s

Explored 1 nodes (55 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 704 446 103 

Optimal solution found (tolerance 1.00e-04)
Best objective 7.040000000000e+02, best bound 7.040000000000e+02, gap 0.0000%
=================== for P=5
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x30b1d761
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [5e+00, 5e+00]
Found heuristic solution: objective 272.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 564.0000000

Root relaxation: objective 8.550000e+02, 56 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0     855.0000000  855.00000  0.00%     -    0s

Explored 1 nodes (56 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 855 564 272 

Optimal solution found (tolerance 1.00e-04)
Best objective 8.550000000000e+02, best bound 8.550000000000e+02, gap 0.0000%
=================== for P=6
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x4d618f48
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [6e+00, 6e+00]
Found heuristic solution: objective 433.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 725.0000000

Root relaxation: objective 1.005000e+03, 45 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1005.0000000 1005.00000  0.00%     -    0s

Explored 1 nodes (45 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1005 725 433 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.005000000000e+03, best bound 1.005000000000e+03, gap 0.0000%
=================== for P=7
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x86f835a6
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [7e+00, 7e+00]
Found heuristic solution: objective 450.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 891.0000000

Root relaxation: objective 1.146000e+03, 40 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1146.0000000 1146.00000  0.00%     -    0s

Explored 1 nodes (40 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1146 891 450 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.146000000000e+03, best bound 1.146000000000e+03, gap 0.0000%
=================== for P=8
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd0acb5e1
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [8e+00, 8e+00]
Found heuristic solution: objective 631.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1045.0000000

Root relaxation: objective 1.270000e+03, 40 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1270.0000000 1270.00000  0.00%     -    0s

Explored 1 nodes (40 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1270 1045 631 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.270000000000e+03, best bound 1.270000000000e+03, gap 0.0000%
=================== for P=9
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xfab77a07
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [9e+00, 9e+00]
Found heuristic solution: objective 780.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1143.0000000

Root relaxation: objective 1.384000e+03, 34 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1384.0000000 1384.00000  0.00%     -    0s

Explored 1 nodes (34 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1384 1143 780 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.384000000000e+03, best bound 1.384000000000e+03, gap 0.0000%
=================== for P=10
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x7479a8cc
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 780.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1227.0000000

Root relaxation: objective 1.475000e+03, 35 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1475.0000000 1475.00000  0.00%     -    0s

Explored 1 nodes (35 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1475 1227 780 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.475000000000e+03, best bound 1.475000000000e+03, gap 0.0000%
=================== for P=11
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x8bfbba92
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 790.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1293.0000000

Root relaxation: objective 1.564000e+03, 32 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1564.0000000 1564.00000  0.00%     -    0s

Explored 1 nodes (32 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1564 1293 790 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.564000000000e+03, best bound 1.564000000000e+03, gap 0.0000%
=================== for P=12
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xf70b3ac7
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 858.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1407.0000000

Root relaxation: objective 1.647000e+03, 32 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1647.0000000 1647.00000  0.00%     -    0s

Explored 1 nodes (32 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1647 1407 858 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.647000000000e+03, best bound 1.647000000000e+03, gap 0.0000%
=================== for P=13
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xe1965031
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 945.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1376.0000000

Root relaxation: objective 1.715000e+03, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1715.0000000 1715.00000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1715 1376 945 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.715000000000e+03, best bound 1.715000000000e+03, gap 0.0000%
=================== for P=14
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x71c262ee
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 1059.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1490.0000000

Root relaxation: objective 1.743000e+03, 22 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1743.0000000 1743.00000  0.00%     -    0s

Explored 1 nodes (22 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1743 1490 1059 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.743000000000e+03, best bound 1.743000000000e+03, gap 0.0000%
=================== for P=15
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x0af939ff
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1230.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1499.0000000

Root relaxation: objective 1.763000e+03, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1763.0000000 1763.00000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1763 1499 1230 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.763000000000e+03, best bound 1.763000000000e+03, gap 0.0000%
=================== for P=16
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x0b49ef42
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1310.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1567.0000000

Root relaxation: objective 1.780000e+03, 16 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1780.0000000 1780.00000  0.00%     -    0s

Explored 1 nodes (16 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1780 1567 1310 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.780000000000e+03, best bound 1.780000000000e+03, gap 0.0000%
=================== for P=17
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x526d2816
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1313.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1571.0000000

Root relaxation: objective 1.789000e+03, 11 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1789.0000000 1789.00000  0.00%     -    0s

Explored 1 nodes (11 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1789 1571 1313 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.789000000000e+03, best bound 1.789000000000e+03, gap 0.0000%
=================== for P=18
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x03da43ef
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1313.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1571.0000000

Root relaxation: objective 1.793000e+03, 9 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1793.0000000 1793.00000  0.00%     -    0s

Explored 1 nodes (9 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1793 1571 1313 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.793000000000e+03, best bound 1.793000000000e+03, gap 0.0000%
=================== for P=19
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xc8613c39
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1317.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1573.0000000

Root relaxation: objective 1.797000e+03, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1573 1317 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=20
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd2fb92d6
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1408.0000000
Presolve removed 3254 rows and 3254 columns
Presolve time: 0.00s
Presolved: 51 rows, 78 columns, 253 nonzeros
Variable types: 0 continuous, 78 integer (78 binary)
Found heuristic solution: objective 1641.0000000

Root relaxation: objective 1.797000e+03, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1641 1408 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=21
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xefd84af8
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1408.0000000
Presolve removed 3255 rows and 3255 columns
Presolve time: 0.00s
Presolved: 50 rows, 77 columns, 244 nonzeros
Variable types: 0 continuous, 77 integer (77 binary)
Found heuristic solution: objective 1772.0000000

Root relaxation: objective 1.797000e+03, 6 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (6 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1772 1408 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=22
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xefb7c4b9
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1563.0000000
Presolve removed 3257 rows and 3257 columns
Presolve time: 0.00s
Presolved: 48 rows, 75 columns, 228 nonzeros
Variable types: 0 continuous, 75 integer (75 binary)
Found heuristic solution: objective 1792.0000000

Root relaxation: objective 1.797000e+03, 8 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (8 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1792 1563 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=23
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x7e54be92
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1563.0000000
Presolve removed 3261 rows and 3263 columns
Presolve time: 0.00s
Presolved: 44 rows, 69 columns, 192 nonzeros
Variable types: 0 continuous, 69 integer (68 binary)
Found heuristic solution: objective 1784.0000000

Root relaxation: objective 1.797000e+03, 4 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0    1797.0000000 1797.00000  0.00%     -    0s

Explored 1 nodes (4 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 1797 1784 1563 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=24
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x473ac067
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1571.0000000
Presolve removed 3265 rows and 3267 columns
Presolve time: 0.00s
Presolved: 40 rows, 65 columns, 170 nonzeros
Variable types: 0 continuous, 65 integer (64 binary)
Found heuristic solution: objective 1797.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 1797 1571 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=25
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xd00fda1f
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 1646.0000000
Presolve removed 3275 rows and 3281 columns
Presolve time: 0.00s
Presolved: 30 rows, 51 columns, 117 nonzeros
Variable types: 0 continuous, 51 integer (48 binary)
Found heuristic solution: objective 1797.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 1797 1646 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=26
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x83d3e292
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 1762.0000000
Presolve removed 3305 rows and 3332 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 1797 1762 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=27
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0x1af93551
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 1762.0000000
Presolve removed 3305 rows and 3332 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 1797 1762 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
=================== for P=28
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 3305 rows, 3332 columns and 6943 nonzeros
Model fingerprint: 0xaa492b11
Variable types: 0 continuous, 3332 integer (3332 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 1797.0000000
Presolve removed 3305 rows and 3332 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 1: 1797 

Optimal solution found (tolerance 1.00e-04)
Best objective 1.797000000000e+03, best bound 1.797000000000e+03, gap 0.0000%
/opt/anaconda3/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1114: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
  scatter = ax.scatter(

Task: Repeat the whole process with another fishnet_points with different fishnet interval.¶

In [165]:
interval = 5280  # 1 mile
fishnet_points = create_fishnet(interval)

current_coverage = fishnet_points.within(stations.buffer(S).unary_union).sum()

I = len(fishnet_points)
J = len(stations)

a_i = a_i = [1] * I

D_ij = np.array([[np.sqrt((fishnet_points.geometry.iloc[i].x - stations.geometry.iloc[j].x)**2 + 
                 (fishnet_points.geometry.iloc[i].y - stations.geometry.iloc[j].y)**2) 
         for j in range(J)] for i in range(I)])

N_i = [[j for j in range(J) if D_ij[i][j] <= S] for i in range(I)]
Number of points in the fishnet: 330
In [163]:
optimize_and_evaluate(demand_block=False)
=================== for P=3
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x311933b3
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+00, 3e+00]
Found heuristic solution: objective 4.0000000
Presolve removed 105 rows and 113 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 96 nonzeros
Variable types: 0 continuous, 43 integer (38 binary)
Found heuristic solution: objective 12.0000000

Root relaxation: objective 2.400000e+01, 27 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      24.0000000   24.00000  0.00%     -    0s

Explored 1 nodes (27 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 24 12 4 

Optimal solution found (tolerance 1.00e-04)
Best objective 2.400000000000e+01, best bound 2.400000000000e+01, gap 0.0000%
=================== for P=4
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x9919e12f
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [4e+00, 4e+00]
Found heuristic solution: objective 4.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 19.0000000

Root relaxation: objective 3.100000e+01, 23 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      31.0000000   31.00000  0.00%     -    0s

Explored 1 nodes (23 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 31 19 4 

Optimal solution found (tolerance 1.00e-04)
Best objective 3.100000000000e+01, best bound 3.100000000000e+01, gap 0.0000%
=================== for P=5
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x3629d60b
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [5e+00, 5e+00]
Found heuristic solution: objective 10.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 25.0000000

Root relaxation: objective 3.700000e+01, 22 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      37.0000000   37.00000  0.00%     -    0s

Explored 1 nodes (22 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 37 25 10 

Optimal solution found (tolerance 1.00e-04)
Best objective 3.700000000000e+01, best bound 3.700000000000e+01, gap 0.0000%
=================== for P=6
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xeeb1854d
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [6e+00, 6e+00]
Found heuristic solution: objective 17.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 32.0000000

Root relaxation: objective 4.300000e+01, 23 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      43.0000000   43.00000  0.00%     -    0s

Explored 1 nodes (23 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 43 32 17 

Optimal solution found (tolerance 1.00e-04)
Best objective 4.300000000000e+01, best bound 4.300000000000e+01, gap 0.0000%
=================== for P=7
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x8e557d26
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [7e+00, 7e+00]
Found heuristic solution: objective 18.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 33.0000000

Root relaxation: objective 4.800000e+01, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      48.0000000   48.00000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 48 33 18 

Optimal solution found (tolerance 1.00e-04)
Best objective 4.800000000000e+01, best bound 4.800000000000e+01, gap 0.0000%
=================== for P=8
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x412d264e
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [8e+00, 8e+00]
Found heuristic solution: objective 25.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 39.0000000

Root relaxation: objective 5.200000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      52.0000000   52.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 52 39 25 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.200000000000e+01, best bound 5.200000000000e+01, gap 0.0000%
=================== for P=9
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x8d5921f0
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [9e+00, 9e+00]
Found heuristic solution: objective 31.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 45.0000000

Root relaxation: objective 5.500000e+01, 15 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      55.0000000   55.00000  0.00%     -    0s

Explored 1 nodes (15 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 55 45 31 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.500000000000e+01, best bound 5.500000000000e+01, gap 0.0000%
=================== for P=10
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x7d40f783
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 31.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 53.0000000

Root relaxation: objective 5.800000e+01, 18 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      58.0000000   58.00000  0.00%     -    0s

Explored 1 nodes (18 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 58 53 31 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.800000000000e+01, best bound 5.800000000000e+01, gap 0.0000%
=================== for P=11
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x7f723fb7
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 31.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 55.0000000

Root relaxation: objective 6.100000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      61.0000000   61.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 61 55 31 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.100000000000e+01, best bound 6.100000000000e+01, gap 0.0000%
=================== for P=12
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x15631b6d
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 34.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 58.0000000

Root relaxation: objective 6.300000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      63.0000000   63.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 63 58 34 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.300000000000e+01, best bound 6.300000000000e+01, gap 0.0000%
=================== for P=13
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xa609426b
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 38.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 61.0000000

Root relaxation: objective 6.400000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      64.0000000   64.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 64 61 38 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.400000000000e+01, best bound 6.400000000000e+01, gap 0.0000%
=================== for P=14
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x4aa95dfb
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 41.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 65.0000000

Root relaxation: cutoff, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0     cutoff    0        65.00000   65.00000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 65 41 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.500000000000e+01, best bound 6.500000000000e+01, gap 0.0000%
=================== for P=15
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xd341d413
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 49.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 66.0000000

Root relaxation: cutoff, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0     cutoff    0        66.00000   66.00000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 66 49 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.600000000000e+01, best bound 6.600000000000e+01, gap 0.0000%
=================== for P=16
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x6a68f571
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 67.0000000

Root relaxation: infeasible, 2 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 infeasible    0        67.00000   67.00000  0.00%     -    0s

Explored 1 nodes (2 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 67 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.700000000000e+01, best bound 6.700000000000e+01, gap 0.0000%
=================== for P=17
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x09d67450
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 67.0000000

Root relaxation: objective 6.800000e+01, 2 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      68.0000000   68.00000  0.00%     -    0s

Explored 1 nodes (2 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 68 67 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=18
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x7b085795
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=19
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x549c55dc
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=20
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x50fb7ebe
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 52.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 52 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=21
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x1e190363
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 52.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 52 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=22
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xd659c4cf
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 60.0000000
Presolve removed 106 rows and 114 columns
Presolve time: 0.00s
Presolved: 23 rows, 42 columns, 91 nonzeros
Variable types: 0 continuous, 42 integer (36 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 60 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=23
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xe4a3657c
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 60.0000000
Presolve removed 107 rows and 116 columns
Presolve time: 0.00s
Presolved: 22 rows, 40 columns, 86 nonzeros
Variable types: 0 continuous, 40 integer (35 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 60 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=24
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x08ce139e
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 60.0000000
Presolve removed 108 rows and 117 columns
Presolve time: 0.00s
Presolved: 21 rows, 39 columns, 81 nonzeros
Variable types: 0 continuous, 39 integer (34 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 60 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=25
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x3a84b333
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 63.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 68 63 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=26
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x8cb23f44
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 67.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.00 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 68 67 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=27
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xff0531fb
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 67.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 68 67 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=28
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x91f4c1f7
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 68.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 1: 68 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
/opt/anaconda3/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1114: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
  scatter = ax.scatter(
In [164]:
selecteds = []  # List to store selected stations for each value of p
obj_vals = []   # List to store objective values for each value of p

# Iterate over values of p starting from 3
for p in range(3, len(stations)+1):
    print(f"=================== for P={p}")  # Print current value of p
    # Call solve_mclp function to solve the problem for current value of p
    selected_stations, obj_val = solve_mclp(p)
    # Append selected stations to the selecteds list
    selecteds.append(selected_stations)
    # Append objective value to the obj_vals list
    obj_vals.append(obj_val)
    
results = pd.DataFrame({
    'P': range(3, len(stations)+1),
    'Coverage': obj_vals
})

scatterplot_result(results)
=================== for P=3
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x311933b3
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+00, 3e+00]
Found heuristic solution: objective 4.0000000
Presolve removed 105 rows and 113 columns
Presolve time: 0.00s
Presolved: 24 rows, 43 columns, 96 nonzeros
Variable types: 0 continuous, 43 integer (38 binary)
Found heuristic solution: objective 12.0000000

Root relaxation: objective 2.400000e+01, 27 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      24.0000000   24.00000  0.00%     -    0s

Explored 1 nodes (27 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 24 12 4 

Optimal solution found (tolerance 1.00e-04)
Best objective 2.400000000000e+01, best bound 2.400000000000e+01, gap 0.0000%
=================== for P=4
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x9919e12f
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [4e+00, 4e+00]
Found heuristic solution: objective 4.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 19.0000000

Root relaxation: objective 3.100000e+01, 23 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      31.0000000   31.00000  0.00%     -    0s

Explored 1 nodes (23 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 31 19 4 

Optimal solution found (tolerance 1.00e-04)
Best objective 3.100000000000e+01, best bound 3.100000000000e+01, gap 0.0000%
=================== for P=5
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x3629d60b
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [5e+00, 5e+00]
Found heuristic solution: objective 10.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 25.0000000

Root relaxation: objective 3.700000e+01, 22 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      37.0000000   37.00000  0.00%     -    0s

Explored 1 nodes (22 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 37 25 10 

Optimal solution found (tolerance 1.00e-04)
Best objective 3.700000000000e+01, best bound 3.700000000000e+01, gap 0.0000%
=================== for P=6
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xeeb1854d
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [6e+00, 6e+00]
Found heuristic solution: objective 17.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 32.0000000

Root relaxation: objective 4.300000e+01, 23 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      43.0000000   43.00000  0.00%     -    0s

Explored 1 nodes (23 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 43 32 17 

Optimal solution found (tolerance 1.00e-04)
Best objective 4.300000000000e+01, best bound 4.300000000000e+01, gap 0.0000%
=================== for P=7
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x8e557d26
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [7e+00, 7e+00]
Found heuristic solution: objective 18.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 33.0000000

Root relaxation: objective 4.800000e+01, 21 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      48.0000000   48.00000  0.00%     -    0s

Explored 1 nodes (21 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 48 33 18 

Optimal solution found (tolerance 1.00e-04)
Best objective 4.800000000000e+01, best bound 4.800000000000e+01, gap 0.0000%
=================== for P=8
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x412d264e
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [8e+00, 8e+00]
Found heuristic solution: objective 25.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 39.0000000

Root relaxation: objective 5.200000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      52.0000000   52.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 52 39 25 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.200000000000e+01, best bound 5.200000000000e+01, gap 0.0000%
=================== for P=9
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x8d5921f0
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [9e+00, 9e+00]
Found heuristic solution: objective 31.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 45.0000000

Root relaxation: objective 5.500000e+01, 15 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      55.0000000   55.00000  0.00%     -    0s

Explored 1 nodes (15 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 55 45 31 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.500000000000e+01, best bound 5.500000000000e+01, gap 0.0000%
=================== for P=10
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x7d40f783
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 31.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 53.0000000

Root relaxation: objective 5.800000e+01, 18 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      58.0000000   58.00000  0.00%     -    0s

Explored 1 nodes (18 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 58 53 31 

Optimal solution found (tolerance 1.00e-04)
Best objective 5.800000000000e+01, best bound 5.800000000000e+01, gap 0.0000%
=================== for P=11
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x7f723fb7
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 31.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 55.0000000

Root relaxation: objective 6.100000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      61.0000000   61.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 61 55 31 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.100000000000e+01, best bound 6.100000000000e+01, gap 0.0000%
=================== for P=12
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x15631b6d
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 34.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 58.0000000

Root relaxation: objective 6.300000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      63.0000000   63.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 63 58 34 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.300000000000e+01, best bound 6.300000000000e+01, gap 0.0000%
=================== for P=13
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xa609426b
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 38.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 61.0000000

Root relaxation: objective 6.400000e+01, 14 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      64.0000000   64.00000  0.00%     -    0s

Explored 1 nodes (14 simplex iterations) in 0.02 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 64 61 38 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.400000000000e+01, best bound 6.400000000000e+01, gap 0.0000%
=================== for P=14
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x4aa95dfb
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [1e+01, 1e+01]
Found heuristic solution: objective 41.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 65.0000000

Root relaxation: cutoff, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0     cutoff    0        65.00000   65.00000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.05 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 65 41 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.500000000000e+01, best bound 6.500000000000e+01, gap 0.0000%
=================== for P=15
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xd341d413
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 49.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 66.0000000

Root relaxation: cutoff, 5 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0     cutoff    0        66.00000   66.00000  0.00%     -    0s

Explored 1 nodes (5 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 66 49 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.600000000000e+01, best bound 6.600000000000e+01, gap 0.0000%
=================== for P=16
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x6a68f571
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 67.0000000

Root relaxation: infeasible, 2 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

     0     0 infeasible    0        67.00000   67.00000  0.00%     -    0s

Explored 1 nodes (2 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 67 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.700000000000e+01, best bound 6.700000000000e+01, gap 0.0000%
=================== for P=17
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x09d67450
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 67.0000000

Root relaxation: objective 6.800000e+01, 2 iterations, 0.00 seconds (0.00 work units)

    Nodes    |    Current Node    |     Objective Bounds      |     Work
 Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time

*    0     0               0      68.0000000   68.00000  0.00%     -    0s

Explored 1 nodes (2 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 3: 68 67 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=18
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x7b085795
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=19
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x549c55dc
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 50.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 50 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=20
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x50fb7ebe
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 52.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 52 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=21
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x1e190363
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 52.0000000
Presolve removed 105 rows and 112 columns
Presolve time: 0.00s
Presolved: 24 rows, 44 columns, 97 nonzeros
Variable types: 0 continuous, 44 integer (39 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 52 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=22
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xd659c4cf
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 60.0000000
Presolve removed 106 rows and 114 columns
Presolve time: 0.00s
Presolved: 23 rows, 42 columns, 91 nonzeros
Variable types: 0 continuous, 42 integer (36 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 60 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=23
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xe4a3657c
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 60.0000000
Presolve removed 107 rows and 116 columns
Presolve time: 0.00s
Presolved: 22 rows, 40 columns, 86 nonzeros
Variable types: 0 continuous, 40 integer (35 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 60 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=24
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x08ce139e
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 60.0000000
Presolve removed 108 rows and 117 columns
Presolve time: 0.00s
Presolved: 21 rows, 39 columns, 81 nonzeros
Variable types: 0 continuous, 39 integer (34 binary)
Found heuristic solution: objective 68.0000000

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 8 (of 8 available processors)

Solution count 2: 68 60 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=25
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x3a84b333
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [2e+01, 2e+01]
Found heuristic solution: objective 63.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 68 63 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=26
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x8cb23f44
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 67.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 68 67 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=27
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0xff0531fb
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 67.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 2: 68 67 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
=================== for P=28
Gurobi Optimizer version 10.0.3 build v10.0.3rc0 (mac64[rosetta2])

CPU model: Apple M1 Pro
Thread count: 8 physical cores, 8 logical processors, using up to 8 threads

Academic license 2442811 - for non-commercial use only - registered to se___@bren.ucsb.edu
Optimize a model with 129 rows, 156 columns and 294 nonzeros
Model fingerprint: 0x91f4c1f7
Variable types: 0 continuous, 156 integer (156 binary)
Coefficient statistics:
  Matrix range     [1e+00, 1e+00]
  Objective range  [1e+00, 1e+00]
  Bounds range     [1e+00, 1e+00]
  RHS range        [3e+01, 3e+01]
Found heuristic solution: objective 68.0000000
Presolve removed 129 rows and 156 columns
Presolve time: 0.00s
Presolve: All rows and columns removed

Explored 0 nodes (0 simplex iterations) in 0.01 seconds (0.00 work units)
Thread count was 1 (of 8 available processors)

Solution count 1: 68 

Optimal solution found (tolerance 1.00e-04)
Best objective 6.800000000000e+01, best bound 6.800000000000e+01, gap 0.0000%
/opt/anaconda3/lib/python3.9/site-packages/pandas/plotting/_matplotlib/core.py:1114: UserWarning: No data for colormapping provided via 'c'. Parameters 'cmap' will be ignored
  scatter = ax.scatter(

Question 10: Compare the Scatter plots out of Blocks, 0.2 mile fishnet points, and another fishnet points with interval of your choice. Discuss the insights you can get. ( 5 pts )¶

In Lab 2, we discovered that different Coverage Distance Standard can impact the coverage analysis result.
In Lab 4, we can discover how different demand representation makes difference.
Share your insights about

  • provide three scatter plots ( 3 pts )
  • how SBC_FD is currently doing with existing stations in terms of coverage ( 1 pt )
  • how demand representation impacts the coverage analysis ( 1 pt )

TIP: you can copy and paste your screenshot into markdown cells

PUT your answer HERE

...Blocks scatter plot Screenshot 2024-05-24 at 1.43.35 AM.png

...0.2 mile fishnet points Screenshot 2024-05-24 at 1.43.51 AM.png

...1 mile fishnet points Screenshot 2024-05-24 at 1.49.48 AM.png

Looking at the scatterplots, it seems that SBC_FD would be able to achieve coverage within several percent of current coverage with about half the number of current stations. Specifically, the curve has almost completely flattened at 15, so some minor cut in coverage could see even less stations being sufficient for coverage.

From the fishnet points, it seems that a coarser representation of demand points leads to a quicker convergence in the scatterplot to about full coverage, and also makes the slope greater. Finer representations have slower convergence, but this also most likely is more accurate for capturing the scale of demand for this type of service.